2017-03-21 5 views
0

"레이블 1"과 "레이블 2"가 나란히 있습니다. "Label 1"내용을 사용할 수없는 경우 "Label 2"가 "Label 1"위치를 대체합니다. 자동 레이아웃을 사용하여 어떻게 가능한지 알고 있습니까? enter image description here자동 레이아웃을 사용하여 레이블 위치를 변경하는 방법

두 가지 라벨의 높이 및 무게가 고정되어 있습니다. "레이블 1"에는 선행 및 상위 8 픽셀 여백이 있고 "레이블 2"에는 선행 0 픽셀 및 최상위 8 픽셀이 있습니다. "Label 1"크기를 "0"으로 설정하고 "Label 1"을 숨기지 만 작동하지 않습니다.

+0

테이크'IBOutlet''라벨이 width'의를 LABEL1 숨길하고 그에 따라'constant' 값을 설정할 때. –

+0

당신은 콘센트를 사용하여 그것을 할 수 있습니다. 단지 폭 제한 콘센트를 만들고 레이블 1이 비어 있으면 그 상수를 0으로 설정합니다. –

+0

너는 큰 고정 폭이 필요합니까? 또는 텍스트에 맞게 레이블의 크기를 자동으로 조정 하시겠습니까? – DonMag

답변

1

두 레이블의 너비 제약 조건을 제거하고 요구 사항에 따라 라벨의 압축/허깅 우선 순위 (크기 속성)를 업데이트 (설정)합니다.

너비 제한을 제거하면 문제가 해결되지만 autoLayout은 두 레이블이 같은 선 (점)에 수평으로 배치되어 내용 표시 우선 순위에 충돌이 발생할 수 있습니다. 이 충돌을 해결하려면 두 레이블 중 하나의 압축/포옹 우선 순위를 업데이트해야합니다.

이제는 하나 또는 둘 모두의 레이블 텍스트에 값이없는 경우 nil 값을 설정하여 해당 프레임 (공백)이 다른 레이블에서 자동으로 차지하도록합니다. 두 레이블 텍스트가 모두 nil 값이면 둘 다 사라집니다 (자동으로 너비를 0으로 설정).

enter image description here

+0

나는 당신의 계단을 따라 갔지만 갈등을 보여주지는 않습니다. – nadim

+0

레이블 1에 선행 constaint를 설정 했습니까? 문제가 해결되었거나 여전히이 문제에 직면 해 있습니까? 너비를 제거하면 문제가 해결됩니다. 레이블을 표시하고 싶지 않을 때 레이블 텍스트에 nil 값을 설정하면됩니다. – Krunal

+1

정말 고맙습니다. 고맙습니다. – nadim

1

두 레이블의 너비가 고정되어 있으면 두 레이블에 일정한 너비를 설정하십시오. Lable2의 선행 공백은 label1에 대해 '0'으로 설정됩니다. NSLayoutConstraint을 Label1 너비에 추가하십시오. 이제 프로그래밍 방식으로 Lable1 콘텐츠가 비어있는 것을 발견하면 너비 레이아웃 제약 조건을 '0'으로 설정합니다. Lable2는 자동으로 왼쪽으로 이동하고 Label1 대신 앉습니다.

+0

"두 레이블에 일정한 너비를 설정했습니다."두 레이블 모두 동일한 폭을 의미합니까? – nadim

+0

그것은 귀하의 요구 사항을 기반으로합니다. 레이블에 고정 길이의 문자열이 저장되면 일정한 폭 값을 설정하십시오. 라벨이 문자열의 가변/동적 길이를 유지하려고하면 너비 값을 비율로 설정합니다. 그러나 나는 아래에 언급 된 Krunal 대답으로 가기를 권장합니다. –

+0

오케이, 답장을 보내 주셔서 감사합니다. – nadim

0

당신은 Label2이의 폭을 제약의 IBOutlet을 만들 필요가 당신은을 Label1의 내용을 확인해야합니다. 비어있는 경우 0으로 설정하고 layoutIfNeeded으로 전화하여보기 프레임을 재설정해야합니다.

0

압축/허깅 속성으로 작업하고 싶지 않은 경우 그런 다음 내용이 없을 때 stackview에 레이블을 포함시키고 레이블을 숨길 수 있습니다.

enter image description here

그리고 필요한

enter image description here

제약 조건 :