#UIButton에 사용할 수 있는 기능들
1) UIButton에 연결된 action이 한 번만 실행되게 하고 싶다면? UIButton.isEnabled = false 로 설정하기
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
private let spinningBtn: HighlightedButton = {
let button = UIButton()
button.addTarget(self, action: #selector(selectChoice), for: .touchUpInside)
//...
return button
}()
@objc func selectChoice() {
spinningBtn.isEnabled = false
print("SpinningBtn tapped")
}
|
cs |
UIButton.isEnabled = false 로 설정하면, 한번 버튼이 눌려 함수가 실행된 이후에는 다시 버튼을 눌러도 함수가 실행되지 않게 됩니다.
https://stackoverflow.com/questions/47694622/make-button-tapped-only-once-swift
2)버튼 누를 때 색상 또는 알파값 변하게 만들기
버튼 액션을 touchUpInside로 해도 딱히 눌리는 느낌이 안들기 때문에, 누르는 효과를 조금 더 내고 싶어 시도해 본 방법입니다.
이런식으로 따로 클래스를 만들어서 사용할 수도 있다는 것을 처음 알게되었습니다.
1
2
3
4
5
6
7
8
|
class HighlightedButton: UIButton {
override var isHighlighted: Bool {
didSet {
backgroundColor = isHighlighted ? .gray : .white
}
}
}
|
cs |
5번 라인 isHighlighted ? 뒤에 원하는 색상을 지정하면 됩니다.
gray와 white으로 설정하니 아래처럼 버튼을 탭 했을 때는 회색이, 탭 해제되었을 때는 하얀색이 되는 것을 볼 수 있죠?
내장된 색상 외에도 커스텀 UIColor를 사용해도 됩니다.
1
2
3
4
5
6
7
8
|
class HighlightedButton: UIButton {
override var isHighlighted: Bool {
didSet {
backgroundColor = isHighlighted ? UIColor(red: 255/255, green: 188/255, blue: 188/255, alpha: 1) : UIColor(red: 255/255, green: 188/255, blue: 188/255, alpha: 0.7)
}
}
}
|
cs |
전혀 다른 색상으로 지정하기 보다는 같은 색상에 알파값만 바꾸면 더 예쁘게 효과를 내볼 수 있더라구요.
https://stackoverflow.com/questions/48880031/highlight-a-button-when-pressed-in-swift
반응형
'Swfit' 카테고리의 다른 글
Core Data or Realm? 어떤 것을 선택해야 할까? (0) | 2022.03.17 |
---|---|
GET, POST 방법 (0) | 2022.03.09 |
NumberOfLines 값 설정이 안될 때 (0) | 2022.02.28 |
Navigation Large Title 버그 해결하기 (0) | 2022.02.26 |
UITextView코드로 작성하기 (0) | 2022.02.24 |