2013-10-08 6 views
0

Autolayout을 사용하는 방법을 알아 내려고하고 있는데 문제가 생겼습니다. 크기 200x200의 IB로보기를 만들고 싶습니다. PieView 라 불리는이 뷰는 프레임 (0, 0, 200, 200)을 가진 두 개의 UIImageViews를 가지고 있습니다. 제 질문은, (예를 들어 100) 내 PieView의 크기를 변경하고 하위 뷰 (예 : 0, 0, 100, 100)가 바뀌면 코드에서 updateConstraints를 오버라이드하는 방법입니다. 100).서브 레이아웃 크기 조정시 AutoLayout 문제

그리고 어떻게 컨테이너보기 (PieView)의 파단이 올바르게에/크기/고정 된 상대 위치하는 경우 내가

NSLayoutConstraint *width = [NSLayoutConstraint constraintWithItem:self 
                 attribute:NSLayoutAttributeWidth 
                 relatedBy:NSLayoutRelationEqual 
                  toItem:nil 
                 attribute:NSLayoutAttributeNotAnAttribute 
                 multiplier:1.0f 
                  constant:100.f];//kDiameter * sizeCoef]; 
+0

200x200 PieView에는 프레임 (0,0,200,200)이있는 두 개의 이미지보기가 있습니까? 따라서 이미지 뷰는 서로 위에 겹쳐져 있습니까? – bilobatum

답변

1

을 폭 노력과 높이있어, PieView의 크기를 변경할 수 있습니다 자신의 컨테이너에서 컨테이너 뷰 (PieView)의 너비를 업데이트하기 만하면됩니다.

코드의 뷰 크기를 변경하려면 뷰의 너비에 대한 제약 조건 (예 : 속성)을 유지해야합니다. 따라서 Xcode에 해당 제약 조건을 추가하면 해당 제약 조건에 대한 콘센트를 연결한다는 의미입니다. 또는 코드에 코드를 추가 한 경우 (질문에 작성한대로) 로컬 변수 대신 속성에 제약 조건을 할당하면됩니다.

그런 다음 updateConstraints에서 제약 조건의 constant 속성을 새 너비로 변경하십시오. 다음은 그 예이다 : 당신은 그것의 너비를 변경 할 준비가되면

- (void)updateConstraints 
{ 
    // Probably want to wrap the below line with a check for when you should actually do this change, 
    // as updateConstraints may get called more than once (including when you aren't ready to change the width). 
    self.widthConstraint.constant = 100.0f; 
} 

그럼 그냥보기에 setNeedsUpdateConstraints를 호출!

0

이미지 뷰의 높이 또는 너비 제한을 다시 구성해야할지 확신 할 수 없습니다. 수퍼 뷰를 사용하여 이미지 뷰를 늘리거나 줄이려면 이미지 뷰의 측면을 IB의 수퍼 뷰에 고정하면됩니다. updateConstraints를 재정의 할 필요는 없습니다.

관련 문제