티스토리 뷰
발생일: 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;
}
참고:
반응형
댓글
공지사항