[tvOS] UIButton의 BackgroundImage가 앞에 표시되는 문제를 해결합니다.

tvOS의 UIButton의 BackgroundImage는 왠지 imageView보다 앞에 있으므로, 세트하면 문자나 setImage,state한 이미지가 숨어 보이지 않게 됩니다.



위가 수정된 버튼, 아래가 기존 UIButton

레이어 구조



UIImageView가 두 장 있어 알기 어렵습니다만, backgroundImage의 ImageView가 선두에 와 버리고 있습니다.

class FixedButton : UIButton {
    override func layoutSubviews() {
        super.layoutSubviews()

        if let iv = imageView {
            iv.superview?.bringSubviewToFront(iv)
        }
        if let lbl = titleLabel {
            lbl.superview?.bringSubviewToFront(lbl)
        }
    }
}


위와 같이 UILabel과 UIImageView를 선두로 이동시키면 해결합니다. (backgroundImage의 ImageView는 직접 참조 할 수 없기 때문에 이것으로)

좋은 웹페이지 즐겨찾기