斯威夫特,约束,UILabel,锚定权利

时间:2017-01-25 16:34:28

标签: ios swift3 nslayoutconstraint

所需...

enter image description here

由于某种原因,以下操作不起作用:

extension UIView {
    func addWordOnRight() {
        let l = UILabel()

        //l.frame = self.bounds ..?

        l.textAlignment = .right
        l.text = "blah"

        self.addSubview(l)

        let m = self.layoutMarginsGuide
        l.trailingAnchor.constraint(equalTo: m.trailingAnchor, constant: 0).isActive = true
        l.centerYAnchor.constraint(equalTo: m.centerYAnchor, constant: 0).isActive = true
    }
}

如果你l.frame = self.bounds,它会神秘地锚定在左边,而不是正确。

1 个答案:

答案 0 :(得分:2)

默认情况下,标签的translatesAutoresizingMaskIntoConstraints设置为true,因此视图会自动添加约束。添加自己的约束时,这些约束与已添加的约束冲突。 (您应该在控制台中看到很多警告。)

如果您想使用自动布局设置l.translatesAutoresizingMaskIntoConstraints = false。您的约束现在应该可以正常工作。

如果您还想设置标签的宽度和高度,也可以使用约束设置(仅保留框架)。