상단 및 중간 뷰의 높이가 무엇인지 신경 쓰지 않는 것 같습니다. 그래서 나는 당신을 위해 결정을 내릴 것입니다. 그들은 같은 높이를 가질 것입니다.
NSArray *b = [NSLayoutConstraints
constraintsWithVisualFormat: @"H:|-(10)-[topView]-(10)-|"
options: 0
metrics: nil
views: dict];
NSArray *c = [NSLayoutConstraints
constraintsWithVisualFormat: @"H:|-(10)-[middleView]-(10)-|"
options: 0
metrics: nil
views: dict];
NSArray *d = [NSLayoutConstraints
constraintsWithVisualFormat: @"H:|-(10)-[bottomView]-(10)-|"
options: 0
metrics: nil
views: dict];
편집
을 : 당신은 수평뿐만 아니라 그들을 정렬해야합니다
NSString *vfl = @"V:|-(10)-[topView]-(10)-[middleView]-(10)-[bottomView(==30)]-(10)-|";
NSDictionary *dict = @{@"topView":_topView,@"middleView":_middleView,@"bottomView":_bottomView};
NSArray *a = [NSLayoutConstraints
constraintsWithVisualFormat: vfl
options: 0
metrics: nil
views: dict];
:이 세 가지보기 (_topView, _middleView 및 _bottomView)이 파단되어있는 일반 수퍼에 다음과 같은 제약 조건을 추가
중간보기는 말 그대로 레이블입니다. 레이블에는 본질적인 콘텐츠 크기가 있습니다. 이 뷰의 높이를 설정하지 않으면 자동 레이아웃 시스템이 본능적으로 수행 할 작업을 알 수 있습니다. (알았지?) _topView의 상단을 수퍼 뷰의 맨 위에 고정하고 하단을 레이블의 상단에 고정함으로써 높이를 자동으로 계산해야합니다. 이를 반영하기 위해 코드를 변경했습니다.
편집, 코드에 제약 조건을 추가 이러한 세 가지보기 중 공통 조상 (수퍼)를 찾아 [superview addConstraints:a],[superview addConstraints:b], etc...
는 IB에서 자동 레이아웃의 전원이 꺼져 있는지 확인 작성하고 당신이 translateResizingMasksToConstraints
대상을 설정하는 것이하기 위해 2
NO
.
당신이 가지고있는 문제는 상단과 중간의 높이 (따라서 하단의 위치)가 모호하다는 것입니다. 어떻게 그들을 일하길 원하니? 어떤 유형의 견해입니까? 어떻게 그들의 높이가 작동합니까? 높이는 그 내용에 따라 좌우됩니까? etc ... 또한 어떤 유형의 견해입니까? UITextViews, UIImageViews? 어쩌면 그들은 ... middleView 높이가 topview 높이를 2로 나눈 값입니까? 또는 이와 비슷한 것입니다. 높이를 정의 할 필요가 있습니다. – Fogmeister
Autolayout의 아름다움은 설명 적입니다. 원하는 것을 설명하고 시스템이 계산을 처리합니다. 그러나 시스템이 상단 및 중간 뷰의 높이를 어떻게 크기 지길 원하는지 설명해야합니다. "높이가 달라져야한다"는 것은 실제로 시스템이 사용할 수있는 설명이 아닙니다. 우리에게 당신의 의도를 설명하려고하지 마십시오. 당신이 시스템에 그것을 설명하는 것을 도울 수 있습니까? (예를 들어 가운데보기는 꼭대기보기 높이의 절반이어야합니다.) – Maarten
@Maarten 당신은 그렇게 노력했다는 것보다 훨씬 낫다고 말했습니다. :) 우리가 당신이 어떻게 일하기를 원하는지 설명하고, 우리는 어떤 제약 사항을 해결하려고 노력할 것입니다. 이 효과가 나타납니다. – Fogmeister