我有2个子视图的UIView。由分段控件控制,一次只能看到一个子视图。子视图具有不同的高度。如何将UIView高度设置为取决于可见子视图?
编辑-以下代码适用于分段控件的初始来回顺序,但随后保持在30px。调试器显示存在一个满足约束条件的问题,但是我不确定如何更正它。
错误:
无法同时满足约束条件。以下列表中的约束中至少有一个是您不想要的约束。尝试以下操作:(1)查看每个约束,并尝试找出不期望的约束;(2)查找添加了一个或多个不必要约束的代码并进行修复。(注意:如果看到的是您不了解的NSAutoresizingMaskLayoutConstraints,请参阅有关UIView属性translationsAutoresizingMaskIntoConstraints的文档)
("<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;
}
}
谢谢
它可能不是最干净的,但是我能够使以下代码正常工作。感谢@AJB的帮助。
- (IBAction)segmentValueChanged:(UISegmentedControl *)sender {
switch (sender.selectedSegmentIndex) {
case 0:
self.1stView.hidden = NO;
self.2ndView.hidden = YES;
_1stconstraint = [NSLayoutConstraint
constraintWithItem:_ParentView
attribute:NSLayoutAttributeHeight
relatedBy:NSLayoutRelationEqual
toItem:nil
attribute:NSLayoutAttributeNotAnAttribute
multiplier:1.0
constant:30.0];
[_ParentView setTranslatesAutoresizingMaskIntoConstraints:NO];
[_ParentView removeConstraint:_2ndconstraint];
[_ParentView addConstraint:_1stconstraint];
break;
case 1:
self.1stView.hidden = YES;
self.2ndView.hidden = NO;
_2ndconstraint = [NSLayoutConstraint
constraintWithItem:_ParentView
attribute:NSLayoutAttributeHeight
relatedBy:NSLayoutRelationEqual
toItem:nil
attribute:NSLayoutAttributeNotAnAttribute
multiplier:1.0
constant:60.0];
[_ParentView setTranslatesAutoresizingMaskIntoConstraints:NO];
[_ParentView removeConstraint:_1stconstraint];
[_ParentView addConstraint:_2ndconstraint];
break;
default:
break;
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句