์ƒˆ์†Œ์‹

๐Ÿ“ฑ iOS/-- UIKit

(iOS) UIControl - Button

  • -

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)

system ๊ธฐ๋ณธ์ œ๊ณต ์ด๋ฏธ์ง€

 

 

๋งŒ์•ฝ ๋ฒ„ํŠผ๊ณผ titleLabel์˜ ์œ„์น˜๋ฅผ ๋ฐ”๊พธ๊ณ ์‹ถ๋‹ค๋ฉด stackView์™€ image View๋ฅผ ์ ์ ˆํžˆ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

  1. Image View์— ๋ฒ„ํŠผ์œผ๋กœ ์‚ฌ์šฉ๋  ์ด๋ฏธ์ง€๋ฅผ ๋„ฃ๋Š”๋‹ค.
  2. ์ผ๋ฐ˜ Label๊ณผ image View์˜ ๋Œ€๋žต์ ์ธ ์œ„์น˜๋ฅผ ๋ฐฐ์น˜ํ•œ ๋’ค StackView๋กœ ๋ฌถ๋Š”๋‹ค.
  3. StackView์— ๋‹ค์‹œ View๋ฅผ ์ž„๋ฒ ๋“œ์‹œํ‚จ๋‹ค.
  4. View ์ „์ฒด๋ฅผ ๋ฎ๋Š” Button์„ ๋„ฃ์–ด์ค€๋‹ค. (์ด๋•Œ Button์—๋Š” title์ด ์—†์œผ๋ฉด ์•ˆ๋œ๋‹ค. ํˆฌ๋ช…ํ•œ ๋ฒ„ํŠผ์„ ์”Œ์›Œ์ฃผ๋Š” ๋Š๋‚Œ)

Document outline์˜ ๊ฐ ์ปจํŠธ๋กค๋“ค์˜ ์ˆœ์„œ๋Š” ์œ„์™€ ๊ฐ™์•„์•ผํ•œ๋‹ค. (์ œ์•ฝ๋„ ์ ์ ˆํžˆ ์ž˜ ์„ค์ •ํ•ด์•ผํ•œ๋‹ค.)

Contents

ํฌ์ŠคํŒ… ์ฃผ์†Œ๋ฅผ ๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค

์ด ๊ธ€์ด ๋„์›€์ด ๋˜์—ˆ๋‹ค๋ฉด ๊ณต๊ฐ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.