我有一个自定义父UIView(Say PView
),它由Left,Right,Top和Bottom约束定义。现在我想向SView
添加一个自定义子视图(比如PView
),其宽度等于MIN为200和1/ PView
。
我在PView
类中有updateConstraints方法,我更新了SView
的位置约束。但是,我不确定如何设置其大小,因为我没有PView
的widthConstraint?
答案 0 :(得分:3)
您可以使用Autolayout在故事板中通过比例宽度功能轻松实现此目的。
为你的superView(SView)提供比例宽度为1:3的PView。 父视图约束
如何给出比例约束? 您将ParentView和ChildView设置为相等的宽度,然后双击宽度约束并设置1:3的比率。宽度始终是父视图的1/3
编码方法
[self.yourview addConstraint:[NSLayoutConstraint
constraintWithItem:self.yourview
attribute:NSLayoutAttributeHeight
relatedBy:NSLayoutRelationEqual
toItem:self.yourview
attribute:NSLayoutAttributeWidth
multiplier:(self.yourview.frame.size.height / self.yourview.frame.size.width)
constant:0]];
答案 1 :(得分:1)
您的父视图的约束应该类似于:top,leading,trailing,bottom
您的子视图的约束应该是:top,leading,fixed height
现在选择both view
并设置equal width constraint
,然后选择该约束,并从attribute inspector
将其乘数更改为0.333
。
就是这样!
答案 2 :(得分:0)
尝试使用以下代码
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
sview. frame = CGRectMake(0,0,pview.frame/3,50);
}