본문 바로가기
Swfit

UIButton 코드로 작성하기

by GGShin 2022. 3. 3.

#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

 

Make button tapped only once - Swift

I am making timer. I cannot figure out how to make start button tapped only once as it is starting to count. And at stop button timer.invalidate() does not work @IBAction func start(_ sender: Any...

stackoverflow.com

 

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

 

Highlight a button when Pressed In swift

I Have Already made the Outlets and the action. I have linked the code to the UI. I want a button to be highlighted when pressed. This the code I wrote: @IBAction func buttonPressed(_ sender:

stackoverflow.com

 

 

반응형

'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