2014-12-17 2 views
2

내 프로젝트에는 구현하려는 특정 요소가 있지만이를 위해 뷰의 제약 조건을 동적으로 변경할 수 있습니다. UIView 인스턴스와 UILabel 인스턴스가 있다고 가정 해 보겠습니다. 아래 그림은 어떻게 보이는지 보여줍니다. 그것은 처음처럼 되 고동적 제약 업데이트

enter image description here

(P 사진은 당신이 알고있는 모든 아이폰 6의 조금 크다). 그러나 뷰가 나타나면 (컨테이너의 높이를 변경할지 여부를 결정하기 위해) 계산을 수행하고 적용합니다. 용기 (회색 색상보기) 필요한 경우

enter image description here

난하지만 난 그냥 설명 정확히 같은 일을 수 있으면 좋겠다 ... 응용 프로그램이 그것을 수행하고 마지막으로 우리가 뭔가를 얻을 수 있습니다 감소한다. ..하지 않습니다. 대신,

enter image description here

그래서 용기는 높이가 변경되지만 바로 아래의 레이블은 제약이 있었다하더라도 같은 장소에있다 ... 같은 간다. 그래서 업데이트 된 크기에 따라보기 위치를 동적으로 업데이트하는 방법을 궁금합니다.

미리 감사드립니다.

+0

필요하면 알려주세요? 다른 시각의 맨 아래에 고정 되었습니까? 보기의 높이를 어떻게 업데이 트합니까? 높이 제약의'constant' 속성을 수정하고 있습니까? – vacawama

+0

모든 제약 조건은 Xcode에 의해 설정됩니다. 주 컨트롤러의 뷰가 표시되면 ('viewDidAppear :'메서드) 계산 메서드를 호출하고 거기에서 높이를 늘리거나 'frame.size.height'를 줄입니다. 나는 제약 조건을 가지고 아무것도하지 않으며 이것이 내가 여기서 묻고있는 이유입니다. :) – Majotron

답변

7

제약 조건을 명시 적으로 사용해야합니다. 특히 라벨에는 N 포인트로 설정된 "볼 상부 공간"제약 조건이 있어야합니다. 그런 다음보기 컨트롤러의 콘센트를 "보기의 높이"제약 조건으로 설정하고 해당 제약 조건을 변경하여보기 높이의 크기를 조정하십시오.

@IBOutlet weak var viewHeightConstraint: NSLayoutConstraint! 

func changeViewHeight(sender: AnyObject) { 

    viewHeightConstraint.constant = newHeight 
} 

하면 자세한 내용

라벨에 제약 조건은 무엇
+0

답장을 보내 주셔서 감사합니다! NSLayoutConstraint에 대한 콘센트를 추가했습니다. 뷰가 나타나면 특정 뷰의 높이를 변경하지만 제약 조건의 상수는 동일합니다. 다른 뷰의 제약 조건을 사용하여 뷰를 생성하고 높이를 동적으로 변경하십시오. – Majotron

+2

제약 조건을 사용하는 경우보기의 크기 속성을 직접 수정할 수 없습니다. 제약 조건을 통해서만 가능합니다. 자동 레이아웃과 '예제에 의한 고급 자동 레이아웃'을 소개하는 WWDC 회담을 지켜 보는 것이 좋습니다. 내 생각 엔? – cmyr

+0

정확히, autolayout을 사용하면 필자의 예와 같이 상대 제약의 상수를 수정하여 뷰의 높이를 변경합니다. – valfer