2015-02-03 2 views
0

동적 높이의 맞춤 셀을 사용하여 UITableView를 작성하고 있습니다. 나는 here과 같은 방법론을 사용하고 있습니다.UITableViewCell 동적 제약

간단히하기 위해 아래 그림과 같이 내 셀에 2 개의 UILabels이 포함되어 있다고 가정 해보십시오. enter image description here

자주색 UILabel은 UITableView의 모든 셀에서 동일한 높이로 유지됩니다. 이 경우 보라색 UILabel은 녹색 UILabel보다 크다. 보라색 UILabel의 아래쪽과 contentView의 아래쪽 사이의 구속 조건을 8로 지정하고 싶습니다.

그러나 아래와 같이 두 번째 시나리오가 있습니다. enter image description here

이 경우 보라색 UILabel은 첫 번째 경우와 크기가 같습니다 (작아 보이지만 상대적으로 전체 셀 높이가 더 크기 때문에 작아짐). 녹색 UILabel은 훨씬 더 큽니다. 이 경우, 녹색 UILabel의 하단과 contentView의 아래쪽 사이의 구속 조건을 8로 설정하고 싶습니다.

이제 딜레마는 둘 중 하나를 설정할 수 있습니다 (스토리 보드를 사용 중입니다). 그러나 나는 동시에 둘을 가능하게하는 방법을 생각할 수 없다. 내 생각 엔 녹색 UILabel의 크기에 따라 런타임 중에 프로그래밍 방식으로 제약 조건을 조정해야 할 것입니다.

의견이 있으십니까?

저는 Swift에서 XCode 6.1.1을 사용하고 있습니다.

감사합니다. 보라색 레이블이 같은 높이가 항상 경우

답변

1

는, 당신은 단지 요소의 height 제약 조건을 설정하기보다는 녹색 요소에 대해 8

superview과의 bottom 제약 조건을 설정해야한다, 아마 당신은 선택할 수 있습니다 해당 요소와 contentview을 모두 가져 와서 스토리 보드 창의 아래쪽에있는 "새 제약 조건 추가"창에서 equal heights을 갖는 것으로 설정하십시오. 그런 다음 해당 제약 조건을 선택하고 속성 관리자에서 배율 값을 1 미만의 값으로 편집합니다. 그러면 요소의 높이가 항상 상위 뷰의 높이의 일정 비율이됩니다. 아래보기에서 원하는 8px에 가까워 질 때까지 주변을 조정할 수 있습니다.

+0

의견을 보내 주셔서 감사 드리며 자주색 레이블의 높이 제한을 설정해야합니다. 그러나 녹색 레이블에 대한 메서드를 사용하여 녹색 레이블이 매우 짧으면 (아마도 한 줄만) contentView의 높이가 녹색 레이블의 높이로 제한되므로 자주색 ​​레이블의 일부가 잘립니다. 내가 본질적으로 바라는 것은 다음과 같은 논리입니다 : 초록색 레이블이 보라색 레이블보다 짧으면 contentView는 녹색 레이블보다 8px 아래에 있어야합니다. 이 경우 contentView는 보라색 레이블보다 8px 낮아야합니다. – coldbuffet

+1

contentView의 하단을 greenView로 설정하고 속성 관리자에서 해당 제약 조건의 우선 순위를 990으로 설정해보십시오. 그런 다음 contentView의 bottom을 purpleView로 설정하는 또 다른 제약 조건을 8로 추가하지만 속성 관리자로 이동하여 "Equal"에서 "Greater than or equal"로 변경하여 해당 우선 순위를 1000으로 유지합니다. 이제 contentView의 높이가 보라색보기 아래로 8 픽셀 미만으로 떨어지면 우선 순위 990 제약 조건을 위반하게됩니다. – ptsimpso

+0

감사합니다! 그것은 아름답게 작동했습니다. 제약 조건 관계가 변경 될 수 있다는 것을 알지 못했습니다. 프로그래밍 방식으로 제약 조건을 관리 할 필요가 없기 때문에 매우 기쁩니다. 정답으로 표시됩니다. – coldbuffet

관련 문제