【发布时间】:2014-11-13 04:58:40
【问题描述】:
我有一个带有 2 个子视图的 UIView。一次只能看到 1 个子视图,由分段控件控制。子视图具有不同的高度。如何将 UIView 高度设置为依赖可见子视图?
编辑 - 下面的代码适用于分段控件的初始来回segue,但随后保持在 30px。调试器显示存在满足约束的问题,但我不确定如何更正。
错误:
无法同时满足约束。 以下列表中的至少一个约束可能是您不想要的。试试这个:(1)查看每个约束并尝试找出您不期望的; (2) 找到添加了一个或多个不需要的约束的代码并修复它。 (注意:如果您看到不理解的 NSAutoresizingMaskLayoutConstraints,请参阅 UIView 属性 translatesAutoresizingMaskIntoConstraints 的文档)
("<NSLayoutConstraint:0x7f84f84b3b80 V:[UIView:0x7f84f852bc60(60)]>",
"<NSLayoutConstraint:0x7f84f8494d20 V:[UIView:0x7f84f852bc60(30)]>")
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x7f84f84b3b80 V:[UIView:0x7f84f852bc60(60)]>
代码:
- (IBAction)segmentValueChanged:(UISegmentedControl *)sender {
switch (sender.selectedSegmentIndex) {
case 0:
[_ParentView setTranslatesAutoresizingMaskIntoConstraints:NO];
[_ParentView addConstraint:[NSLayoutConstraint
constraintWithItem:_ParentView
attribute:NSLayoutAttributeHeight
relatedBy:NSLayoutRelationEqual
toItem:nil
attribute:NSLayoutAttributeNotAnAttribute
multiplier:1.0
constant:30.0]];
self.1stView.hidden = NO;
self.2ndView.hidden = YES;
break;
case 1:
[_ParentView setTranslatesAutoresizingMaskIntoConstraints:NO];
[_ParentView addConstraint:[NSLayoutConstraint
constraintWithItem:_ParentView
attribute:NSLayoutAttributeHeight
relatedBy:NSLayoutRelationEqual
toItem:nil
attribute:NSLayoutAttributeNotAnAttribute
multiplier:1.0
constant:60.0]];
self.1stView.hidden = YES;
self.2ndView.hidden = NO;
break;
default:
break;
}
}
谢谢
【问题讨论】: