2013-03-17 2 views
5

세 개의 레이블이 포함 된 뷰가 있습니다.Autolayout을 사용하여 세 개의 객체를 가운데로 맞 춥니 다

첫 번째 레이블이 맨 위에 표시됩니다. 세 번째 레이블은 하단에서 50px 위치합니다.

내가하려는 것은 autolayout을 사용하여 항상 두 번째 레이블의 가운데에 두 번째 레이블을 배치하는 것이지만 어떻게해야하는지 알 수는 없습니다.

문제는 두 번째 레이블이보기의 중앙에 있지 않다는 것입니다.

두 개의 세로 간격 제한을 초기 값보다 작거나 같게 설정했지만 작동하지 않았습니다.

autolayout을 통해서만 가능합니까? 다른보기를 추가하려고 생각했지만 좋은 해결책이 아닙니다.

감사합니다.

답변

1

자동 레이아웃으로이 작업을 수행 할 수 있다고 생각하지 않습니다. layoutSubviews (또는 UIView 하위 클래스를 사용하지 않는 경우 viewDidLayoutSubviews)을 레이블 1과 레이블 3 사이에 레이블 2를 가운데 맞추기 위해 바꿔야합니다 (먼저 [super layoutSubviews]을 호출해야합니다).

편집 : 여기에 몇 가지 샘플 코드가 있습니다.

- (void)layoutSubviews { 
    [super layoutSubviews]; 

    _label2.center = CGPointMake(_label2.center.x, (CGRectGetMaxY(_label1.frame) + CGRectGetMinY(_label3.frame))/2); 
} 
0

다른 대답은 잘못되었습니다. 이 작업을 수행하는 가장 쉬운 방법은 레이블이 들어있는 NSView을 만들고 두 번째 레이블이 가운데에 있도록 설정하는 것입니다. 이전의 대답은 Autolayout 시스템이보기간에 공간을 분할해야 할 때 똑같이 수행 할 것이라고 가정했지만 몇 가지 빠른 테스트에서는 그렇지 않다고 제안했습니다.

Autolayout을 사용하면 특정 공간이 현재 다른 공간과 같아야한다고 생각하지 않을 것입니다.

관련 문제