swift공부

[오류해결]UIView를 사용할 때 button에 색이 먹지않는 경우

밍강 2023. 10. 23. 21:10

아이디와 비밀번호를 입력했을 때 로그인버튼의 색깔이 바뀌게 하고싶었으나 잘 되지않은 모습이다.

loginButton.backgroundColor = UIColor(named: "theme01PointColor01")
loginButton.isEnabled = true

문제의 코드다.

저 코드는 뷰 컨트롤러에서 UIView를 이용해 구현한 코드이다. 

나는 button의 background버튼을 바꾸고 싶었다. 

버튼은 UIView로 구현을 했다. UIView를 처음써봐서 생긴 실수였다. 

 

 

버튼에 색을 줘야하는데 버튼의 뷰에 색을 줘버린것이다. 

위의 코드에 버튼에 색을 주고싶다면 어떻게 해야할까? 

 

class ButtonTappedView: UIView {
    weak var delegate: ButtonTappedViewDelegate?
    
    //버튼
    private lazy var anyButton : UIButton = {
        let button = UIButton()
        button.backgroundColor = UIColor(named: "theme01PointColor03")
        button.layer.cornerRadius = 5
        button.layer.masksToBounds = true
        //button.isEnabled = false //버튼을 비활성화 해주는 코드(나중에 색깔 변하게 해서 활성화 시켜줄거임
        button.addTarget(self, action: #selector(buttonTapped), for: .touchUpInside)
        return button
    }()

먼저 뷰를 살펴보자. 나는 뷰에 anyButton이라는 버튼을 만들었다. 

버튼에 색을 주기위해 먼저 함수를 하나 만들었다. 

func changeButtonColor (color: UIColor?) {
        anyButton.backgroundColor = color
    }

이렇게 말이다. 버튼 의  배경색깔을 바꾸는 함수이다. 그리고 아까 위의 코드를 저 함수를 이용해서 고쳐볼거다. 

 

 

loginButton.changeButtonColor(color: UIColor(named: "theme01PointColor01"))
loginButton.isEnabled = true

 

다른점이 보이는가? 나는 저 함수를 이용해 view가 아닌 뷰의 버튼에 색깔을 주었다. 

성공!

버튼의 글자 색깔을 변경하고 싶다면 아래의 코드를 사용하면 된다. 

func changeTitleColor (color: UIColor?) {
        anyButton.setTitleColor(color, for: .normal)
    }

 

 

 

 

피드백은 댓글로 부탁합니다.