์ด๋ ๊ฒ ๋์ ๋ฒํผ์ ํด๋ฆญํ๋ฉด ๋น๋ฐ๋ฒํธ๊ฐ ๋ณด์ด๊ฒ ์๋ณด์ด๊ฒ ์ค์ ํ ๊ฒ์ด๋ค!
1. ๋ฒํผ์ ํํ๋ฅผ ์ค์ ํด์ค๋ค
๊ฐ์ฅ ํํ ์ฌ์ฉ๋๋ ๋ฒํผ ํ์ ์ Custom ๋๋ Systemํ์ ์ด๊ณ , ํ์์ ๋ฐ๋ผ ๋ค๋ฅธ ํ์ ์ ์ฌ์ฉํด์ฃผ๋ฉด ๋๋ค.
var eyeButton = UIButton(type: .custom)
2. ๋๋์ ๋ฒํผ์ ๊ฐ์ฒด ์์ฑ
primaryAction์ ๋ฒํผ ํด๋ฆญ์ ํ ๋์ handler๋ฅผ ์ค์ ํ๋ค.
eyeButton = UIButton.init(primaryAction: UIAction(handler: { [self]_ in
passwordTextField.isSecureTextEntry.toggle()
self.eyeButton.isSelected.toggle()
}))
#๋ฒ์ธ์ค๋ช - primaryAction
primaryAction์ UIActionํ์ ์ ๋ฐ๋๋ค. addTarget์ ์ฌ์ฉํ์ง ์์๋ ๋๋ค๊ณ ํฉ๋๋ค!
์ ) addTarget๋ฒ์
override func viewDidLoad() { super.viewDidLoad() let button = UIButton(type: .custom) button.addTarget(self, action: #selector(buttonDidTap), for: .touchUpInside) } @objc func buttonDidTap() { print("yujindonut") }
์ฝ๋๋ก UIButton์ ์์ฑํ๊ณ , ํด๋น button์ ํญํ ๋๋ง๋ค action(buttonDidTap)์ ์ง์ ํด์ค
iOS14์์๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก button์ actioin์ ์ค ์ ์๊ฒ ๋์๋ค.
let button = UIButton(type: .custom, primaryAction: UIAction(handler: { _ in print("Zedd") }))โ
action์ closure๋ฅผ ๋ฐ๋ก ๋ฃ์ ์ ์๋ค!
3. ๋๋์ ๋ฒํผ ๊พธ๋ฏธ๊ธฐ
var buttonConfiguration = UIButton.Configuration.plain()
buttonConfiguration.imagePadding = 10
buttonConfiguration.baseBackgroundColor = .clear
configure : ํ๊ฒฝ์ค์ , ๊ตฌ์ฑํ๋ค (๋ฒํผ์ ๊พธ๋ฉฐ์ค๋ ์ฌ์ฉํ๋ค)
imagePadding : ํ ์คํธ ํ๋ ์ฐ์ธก์ ํฐํผํ ์ ์๋ ๋ฒํผ ๊ณต๊ฐ์ ๋๊ธฐ ์ํด์
baseBackgroundColor : ๋ฒํผ ํด๋ฆญ์ ํ์ ๋ฐฐ๊ฒฝ์ ํฌ๋ช ํ๊ฒ ํ๊ธฐ ์ํด์
UIButton.configuration์๋ 4๊ฐ์ง์ static ๋ฉ์๋๋ฅผ ์ ๊ณตํด์ค๋ค.
์์์๋ถํฐ plain, gray, tinted, filled๋ฒํผ์ด๋ค
4. button์ ์ด๋ฏธ์ง ์ค์ ํด์ฃผ๊ธฐ
eyeButton.setImage(UIImage(named: "password-hidden-icon"), for: .normal)
self.eyeButton.setImage(UIImage(named: "password-shown-icon"), for: .selected)
self.eyeButton.configuration = buttonConfiguration
.normal : ํด๋ฆญ ์ํ์ ๋
.selected : ํด๋ฆญ ํ์ ๋
5. passwordTextField์ ์ค๋ฅธ์ชฝ์ ๋๋์ ๋ฒํผ ์ง์ด ๋ฃ๊ธฐ
self.passwordTextField.rightView = eyeButton
self.passwordTextField.rightViewMode = .always
.rightView์ eyeButton ์ง์ด๋ฃ๊ณ , righViewMode๋ฅผ always ์์ฑ์ ์ค์ผ๋ก์จ, ์ค๋ฅธ์ชฝ ์นธ์ ํญ์ ๋ณด์ฌ์ค๋ค.
์ถ์ฒ : ์คํ ๋จธ๋ฆฟ์ ( ์คํ ์๋ผ๋ทฐ)
https://gyuios.tistory.com/126
https://zeddios.tistory.com/1093
'๊ธฐํ > iOS๐' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[iOS] Xcode Pod install ์ค๋ฅ (0) | 2022.05.07 |
---|---|
[iOS/Swift] Table View (0) | 2022.04.23 |
[iOS] Build input file cannot be found ์ค๋ฅ ํด๊ฒฐ (0) | 2022.04.18 |
[iOS] ์คํ ๋ทฐ ( StackView ) (0) | 2022.04.12 |
[iOS] ์คํ ๋ ์ด์์( Auto Layout ) (0) | 2022.04.12 |