我正在尝试根据父 View 的宽度将我的 subview 放置在左边距处。这听起来很简单,但我不知道如何使用自动布局来做到这一点。

从逻辑上讲,我只需要将左边距值设置为父宽度的某个百分比值,但目前,我无法将该逻辑转换为自动布局。

这是我目前的代码:

var view = UIView();
view.backgroundColor = UIColor.redColor();
view.frame = CGRectMake(0, 0, 320, 400);

var sview = UIView();
sview.setTranslatesAutoresizingMaskIntoConstraints(false);
sview.backgroundColor = UIColor.yellowColor();
//sview.frame = CGRectMake(0, 0, 50, 50);
view.addSubview(sview);

var dict = Dictionary<String, UIView>()
dict["box"] = sview;

var con1 = NSLayoutConstraint(item: sview, attribute: NSLayoutAttribute.Top, relatedBy: NSLayoutRelation.Equal, toItem: view, attribute: NSLayoutAttribute.Top, multiplier: 1.0, constant: 20.0);
view.addConstraint(con1);

var con2 = NSLayoutConstraint(item: sview, attribute: NSLayoutAttribute.Left, relatedBy: NSLayoutRelation.Equal, toItem: view, attribute: NSLayoutAttribute.Width, multiplier: 0.75, constant: 0.0);
view.addConstraint(con2);

var con3 = NSLayoutConstraint(item: sview, attribute: NSLayoutAttribute.Width, relatedBy: NSLayoutRelation.Equal, toItem: view, attribute: NSLayoutAttribute.Width, multiplier: 1.0, constant: 0.0);
view.addConstraint(con3);

var con4 = NSLayoutConstraint(item: sview, attribute: NSLayoutAttribute.Height, relatedBy: NSLayoutRelation.Equal, toItem: view, attribute: NSLayoutAttribute.Height, multiplier: 1.0, constant: 0.0);
view.addConstraint(con4);

这是代码返回错误的地方:
var con2 = NSLayoutConstraint(item: sview, attribute: NSLayoutAttribute.Left, relatedBy: NSLayoutRelation.Equal, toItem: view, attribute: NSLayoutAttribute.Width, multiplier: 0.75, constant: 0.0);
view.addConstraint(con2);

错误:



有没有人知道如何实现这一目标?我只希望左边距是父 View 宽度的 0.75%。

谢谢。

最佳答案

你想要的是sview left left of view的某个点,你写的是你希望sview的左边在view宽度的某个点正如您的错误所说,配对布局属性。
以下是您需要做的:

NSLayoutConstraint(item: sview,
              attribute: NSLayoutAttribute.Left,
              relatedBy: NSLayoutRelation.Equal,
                 toItem: view,
              attribute: NSLayoutAttribute.Left,
             multiplier: 1,
               constant: (CGRectGetWidth(view.bounds) * 0.75));
希望能帮助到你!
编辑
我发现了一篇关于基于百分比的利润率的好文章:https://web.archive.org/web/20170624134422/http://simblestudios.com/blog/development/percentage-width-in-autolayout.html
或者更简单:
https://web.archive.org/web/20170704113819/http://simblestudios.com/blog/development/easier-percentage-width-in-autolayout.html

关于ios - 使用自动布局的基于百分比的边距,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27185712/

10-14 03:52