UILabel의 숨겨진위한 자동 레이아웃 무시 : 나는 나는 다음과 같은 상황을 가지고
- 내가 정보 텍스트의
UILabel
를 포함하는UITableViewCell
을했습니다. 이 부분UILabel
은uilabel
과 같은 다른 UI 요소입니다 (두 번째 그림 참조). 버튼과 같은 다른 요소 (그림에 표시되지 않음) - 정보 텍스트
uilabel
은 동적으로 높이가 낮기 때문에 아래 요소는 정보 텍스트 레이블의 높이에 따라 수직으로 내려갔습니다. - 첫 번째 그림에서 수평선을 볼 수 있습니다. 이 수평선은 정보 레이블의 높이가 커지면 수직으로 내려갑니다. '가격 변경'레이블은이 수평선의 위치에 따라 세로로 정렬됩니다.
잘 작동합니다. 정보 텍스트가 커지면 다른 요소는 원하는대로 내려갑니다.
지금 내 문제는 : 때때로 정보의 라벨과 수평 구분자는 어떤 정보 텍스트가 없기 때문에 숨길 필요가있다. 유감스럽게도 uilabel 아래의 요소는 숨겨져 있지만 레이블 높이만큼 아래로 이동합니다. 내 그림의 오른쪽을보십시오. 요소는 빨간색 세로 막대로 표시된 양만큼 위로 이동해야합니다.정보 가격 및 "수요액"레이블이 숨겨져 있으면 위로 이동해야한다는 "가격 변동"요소를 어떻게 알 수 있습니까?
업데이트 : 지금 (세 번째 사진에서 보라)
내 코드에 두 NSLayoutContstraints을 추가하고 스토리 보드에서 생성 된 제약에 연결여기에 설명이 있습니다. 두 개의 NSLayoutConstraints가 있습니다. 첫 번째 : horizontalSeparatorContstraint가 첫 번째 가로 구분 기호 인 UIImage의 "Price Changes in"레이블을 연결합니다. 전망. "Demands"와 "Special Requests Label"이 숨겨져 있으면이 제약 조건이 적용되고 "Price changes in"레이블이 위쪽으로 이동하도록 값을 4 단위로 설정합니다. 두 번째 제약 : requiresLabelContstraint - 두 번째 가로 UIImageView와 "가격 변경"레이블 사이의 폐기 된 공간을 설명합니다. 간격은 4 단위 여야합니다. 그리고 특수한 요청 텍스트가 사용 가능한 경우이 제약 조건은 "acitve"여야합니다.
if(tour.specialRequests.length > 0) {
[demandsLabelContstraint setPriority:UILayoutPriorityDefaultHigh];
[horizontalSeparatorContstraint setPriority:UILayoutPriorityDefaultLow];
self.demandsLeftLabel.text = NSLocalizedString(@"GenericTour_Demands", @"");
self.demandsRightLabel.text = tour.specialRequests;
demandsLeftLabel.hidden = NO;
demandsRightLabel.hidden = NO;
horizontalSeparator.hidden = NO;
} else {
[demandsLabelContstraint setPriority:UILayoutPriorityDefaultLow];
[horizontalSeparatorContstraint setPriority:UILayoutPriorityDefaultHigh];
horizontalSeparator.hidden = YES;
demandsRightLabel.hidden = YES;
demandsLeftLabel.hidden = YES;
}
당신이 볼 수있는 코드에서 : : 여기
몇 가지 새로운 코드 내 생각은 각 상황에 대한 우선 순위를 전환하는 것입니다. 특수 요청 텍스트가 사용 가능하면 우선 순위를 설정하여 해당 NSLayoutContraints가 트리거됩니다.Autolayout에 대한 나의 의도 또는 의도는 우선 순위를 변경함으로써 그 사이를 전환 할 수 있다는 것입니다. 그러나 이것은 사실이 아닌 것처럼 보입니다.
그래서 문제를 어떻게 해결해야합니까?
답변 해 주셔서 감사합니다. 내 질문을 업데이트했습니다. – toom