개발/Swift

[TIL] Cell highlighted UI변경, removeFromSuperview 안되는 경우

덤벨로퍼 2022. 7. 8. 08:37

Collection view cell 버튼처럼 Highlited 상태시 UI 변경

override var isHighlighted: Bool

collectionviewCell 에는 isHighlighted 값이있다.

만약 cell이 눌려서 highlighted 상태가 되면 값이 true 풀리면 false로 바뀐다

여기서 didSet을 활용해서 원하는 작업을 할수있다

override var isHighlighted: Bool {
        didSet {
            if isHighlighted {
                setHighlightedUI()
            } else {
                setNormalUI()
            }
        }
    }

 

 

removeFromSuperview 오버라이딩 시 주의할것

func removeAllSubviews() {
        for view in subviews {
            view.removeFromSuperview()
        }
    }

위 함수를 상위 뷰에서 하위 뷰를 제거할떄 사용한다.

 

그런데 이떄 사용중인  하위 뷰에서 removeFromSuperview를 오버라이딩 하여 사용중이라면

super.removeFromSuperview()를 사용해줘야 한다. 아니면 실제 뷰가 지워지지 않는다.

override func removeFromSuperview() {
        super.removeFromSuperview()
        timer?.cancel()
    }

 

 

Snapkit 에서 위치 지정시 superview의 사이즈 percentage 이용하는법

make.height.equalToSuperview().multipliedBy(0.69)

보통 superview의 너비나 높이는 위와같이 percentage 조정을 할수있으나

위치 (left,right,top,bottom) 의 경우 지정값을 사용한다

make.bottom.equalTo(self.snp.bottom).offset(12)

그러나 만약 percentage 조정을 하고싶다면 이렇게도 사용 가능하다

가운데 dial 이미지의 위치를 superview (파란네모) 의 bottom 보다 일정 비율만큼 띄우고싶다면

make.bottom.equalToSuperview().multipliedBy(0.79)

위와 같이 사용할수있다. 0.79 수치가 나온것은

전체높이(279) 에서 56을뺸 높이(220)를 나눈값이다.