비즈니스 로직에 따라 UIViews
가장 자주 표시 / 숨기는 것이 일반적인 패러다임 인 것 같습니다 UILabels
. 내 질문은 AutoLayout을 사용하여 프레임이 0x0 인 것처럼 숨겨진 뷰에 응답하는 가장 좋은 방법은 무엇입니까? 다음은 1-3 개의 기능으로 구성된 동적 목록의 예입니다.
지금은 버튼에서 마지막 레이블까지 10px의 상단 공간이 있으며 레이블이 숨겨져 있으면 분명히 미끄러지지 않습니다. 지금 까지이 제약 조건에 대한 콘센트를 만들고 표시하는 레이블 수에 따라 상수를 수정했습니다. 음수 상수 값을 사용하여 숨겨진 프레임 위로 버튼을 밀어 올리므로 분명히 해킹입니다. 실제 레이아웃 요소에 구속되지 않고 다른 요소의 알려진 높이 / 패딩을 기반으로 몰래 정적 계산을 수행하고 AutoLayout이 만들어진 것과 분명히 싸우기 때문에 나쁘다.
동적 레이블에 따라 새로운 제약 조건을 만들 수는 있지만 공백을 축소하려고 시도하는 것에 대한 많은 미세 관리 및 자세한 표시입니다. 더 나은 접근 방법이 있습니까? 프레임 크기 0,0을 변경하고 AutoLayout이 제약 조건을 조작하지 않고 그 일을 수행하게합니까? 뷰를 완전히 제거 하시겠습니까?
솔직히, 숨겨진보기의 컨텍스트에서 상수를 수정하면 간단한 계산으로 한 줄의 코드가 필요합니다. 새로운 제약 조건을 재현하는 constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:
것은 너무 무거워 보입니다.
2018 년 2 월 편집 : UIStackView
s로 Ben의 답변보기