如何将自定义子视图的宽度设置为没有宽度约束的父UIView的1/3?

时间:2016-09-07 06:42:05

标签: ios uiview autolayout

我有一个自定义父UIView(Say PView),它由Left,Right,Top和Bottom约束定义。现在我想向SView添加一个自定义子视图(比如PView),其宽度等于MIN为200和1/ PView

我在PView类中有updateConstraints方法,我更新了SView的位置约束。但是,我不确定如何设置其大小,因为我没有PView的widthConstraint?

3 个答案:

答案 0 :(得分:3)

您可以使用Autolayout在故事板中通过比例宽度功能轻松实现此目的。

为你的superView(SView)提供比例宽度为1:3的PView。 父视图约束 Orange Super View(SView)

子/子视图视图约束 Red Sub View

如何给出比例约束? 您将ParentView和ChildView设置为相等的宽度,然后双击宽度约束并设置1:3的比率。宽度始终是父视图的1/3

Proportional Width Constraint

编码方法

[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);

}