iOS: 오토레이아웃을 사용할 때 뷰 숨기기

발생일: 2016.03.22

키워드: AutoLayout, 오토레이아웃, 컨스트레인트, constraint

문제:
구현하려는 뷰는 상황에 따라 보이거나 보이지 않고, 상하 여백 또한 변한다.
처음엔 뷰의 hidden 속성을 NO 로 할당하는 것으로 처리했는데, 숨겨진 이후에도 여전히 높이는 유지되어 있는 것 같다.

어떻게 하면 될까?


해결책:

뷰에 height 컨스트레인트를 준 후, 컨스트레인트의 값을 0으로 설정한다.
이 방법이 가장 컨트롤하기 쉬운 방법으로 보인다.

추가로,
- 내가 처리하려던 뷰는 UILabel 이었는데, height 를 0으로 할당할 땐 텍스트의 값도 초기화해줘야 한다.
- 컨스트레인트를 업데이트할 때엔 UIView 의 updateConstraints 메서드에서 처리해주는 것이 적당하다.


코드는 대략 아래와 같은 느낌이다.


@property (weak, nonatocmi) IBOutlet UILabel *sampleLabel;
@property (weak, nonatomic) IBOutlet NSLayoutConstraint* sampleLabelHeightConstraint;

...

- (void)updateConstraints {
    self.sampleLabel.text = @"";
    self.sampleLabelHeightConstraint.constant = 0;
}



참고:

저작자 표시 비영리 변경 금지
신고

카테고리

분류 전체보기 (682)
About me. (6)
Daylogs (647)
비공개 (0)
영어공부 (0)
My works - 추억 (29)