UIControl - Button
Text Button
Button Types
Xcode์์ ๊ธฐ๋ณธํ์
์ผ๋ก ์ ๊ณตํ๋ ๋ฒํผ์ข
๋ฅ๋ค์ ์ด 6๊ฐ์ง์ด๋ค.
- System : ์คํ ๋ฆฌ๋ณด๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ๋ฒํผ์ ์ถ๊ฐํ๋ฉด ๋ํ๋๋ ๋ํดํธํ์
- Detail Disclosure : ๋ถ๊ฐ์ ๋ณด๋ฅผ modal ํน์ popOverํํ๋ก ํ์ํ ๋ ์ฌ์ฉ๋๋ค.
- Info Light : ์์ธ์ ๋ณด ๊ตฌ์ฑ
- Info Dark : ์์ธ์ ๋ณด ๊ตฌ์ฑ
- Add Contract : ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ ๋ ์ฌ์ฉ๋๋ค.
- Close (ios 13๋ถํฐ ์ ๊ณต) : ํ๋ฉด์ ๋ซ๊ฑฐ๋, ์์
์ทจ์์ ์ฌ์ฉ๋๋ค.
State
์ฌ์ฉ์์ ํฐ์น ์ด๋ฒคํธ ํน์ ์์ฑ์ด ๋ฐ๋๋ ์ํ(state)๊ฐ์ด ๋ฐ๋๋ค. ์ด 4๊ฐ์ง์ ์ํ๊ฐ ์๋ค.
- Default
- Highlighted
- Selected
- Disabled
Attribute Inspector์์ State Config์์ ๊ฐ ์ํ๊ฐ ๋์์๋์ ๋ํ ์ต์
๋ค์ ์ ํํ ์ ์๋ค. State Config๋ฅผ ๋ฐ๊พผ๋ค๊ณ ํด์ ๋ฒํผ์ ์์ฑ์ด ๋ฐ๋๋๊ฒ ์๋๋ค. ์ํ๋ฅผ ๋ฐ๊พธ๋ ค๋ฉด State Config๊ฐ ์๋๋ผ, ๊ฐ์ฅ ๋ฐ์ State๋ฅผ ๋ฐ๊ฟ์ค์ผํ๋ค.
๊ทธ๋ฆฌ๊ณ State๋ ๋์์ ์ฌ๋ฌ๊ฐ์ง๋ฅผ ์ ์ฉ์ํฌ ์ ์๋ค.
@IBOutlet weak var btn: UIButton!
btn์ด๋ผ๋ ๋ฒํผ์ ์ํ๋ฅผ ๋ฐ๊พธ๋ ค๋ฉด
btn.isSelected = true
btn.isHighlighted.toggle() // ํ ๊ธ ๋ฉ์๋๋ ์๋ค.
titleLabel - text , textColor
btn.titleLabel?.text = "Changed" // ์ ์ฉ ์๋จ!!
button.titleLabel?.textColor = .black // ์ ์ฉ ์๋จ!!
๋ฒํผ์ ํ์ดํ์ด๋, ํ์ดํ์ ์๊น์ ๋ณ๊ฒฝํ ๋๋ ์ ์ฝ๋์ฒ๋ผ ์ง์ ์ ๊ทผํ์ฌ ๊ฐ์ ๋ฃ๋๊ฒ์ ํ์ฉ๋์ง ์๋๋ค. setTitleColor(_title: String?, for: UIControl.State)
์ setTitle(_title: String?, for: UIControl.State)
๋ฉ์๋๋ฅผ ์ฌ์ฉํด์ผํ๋ค.
btn.setTitleColor(.blue, for: .normal) // ์ด๋ ๊ฒ ํด์ผ ์ ์ฉ๋๋ค!
btn.setTitle("change", for: .normal) // ์ด๋ ๊ฒ ํด์ผ ์ ์ฉ๋๋ค!
Image Button (Custom)
Xcode์์ ๊ธฐ๋ณธ์ ๊ณต๋๋ textButton์ด ์๋ ์ง์ ์ด๋ฏธ์ง๋ฅผ ์ ํํ์ฌ ๋ฒํผ์ ์์ฑํ ์ ์๋ค. ์ด๋ ์ด๋ฏธ์ง๋ titleLabel์ ์ผ์ชฝ์ ํ์๋๋ค.
let normalImage = UIImage(named: "<์ด๋ฏธ์ง ์ด๋ฆ>")
btn.setImage(normalImage, for: .normal)
๋ง์ฝ ๋ฒํผ๊ณผ titleLabel์ ์์น๋ฅผ ๋ฐ๊พธ๊ณ ์ถ๋ค๋ฉด stackView์ image View๋ฅผ ์ ์ ํ ์ฌ์ฉํ๋ฉด ๋๋ค.
- Image View์ ๋ฒํผ์ผ๋ก ์ฌ์ฉ๋ ์ด๋ฏธ์ง๋ฅผ ๋ฃ๋๋ค.
- ์ผ๋ฐ Label๊ณผ image View์ ๋๋ต์ ์ธ ์์น๋ฅผ ๋ฐฐ์นํ ๋ค StackView๋ก ๋ฌถ๋๋ค.
- StackView์ ๋ค์ View๋ฅผ ์๋ฒ ๋์ํจ๋ค.
- View ์ ์ฒด๋ฅผ ๋ฎ๋ Button์ ๋ฃ์ด์ค๋ค. (์ด๋ Button์๋ title์ด ์์ผ๋ฉด ์๋๋ค. ํฌ๋ช
ํ ๋ฒํผ์ ์์์ฃผ๋ ๋๋)
Document outline์ ๊ฐ ์ปจํธ๋กค๋ค์ ์์๋ ์์ ๊ฐ์์ผํ๋ค. (์ ์ฝ๋ ์ ์ ํ ์ ์ค์ ํด์ผํ๋ค.)