如何以编程方式向我的UILabel添加约束

时间:2018-01-02 11:02:43

标签: swift

swift中是否有一种方法可以通过编程方式获得标签并对其进行约束。例如,在所有设备上“固定到顶部”或“固定到右侧”,这样在所有设备上它只会固定在正在使用的设备上。

这是因为我以编程方式创建了一个标签,所以我想为它制作约束。

如果您需要更多信息,请告诉我们。谢谢:))

3 个答案:

答案 0 :(得分:3)

override func viewDidLoad() {
     super.viewDidLoad()
        let label = UILabel()
        self.view.addSubview(label)
        label.topAnchor.constraint(equalTo: self.view.topAnchor).isActive = true
        label.bottomAnchor.constraint(equalTo: self.view.bottomAnchor).isActive = true
        label.leadingAnchor.constraint(equalTo: self.view.leadingAnchor).isActive = true
        label.trailingAnchor.constraint(equalTo: self.view.trailingAnchor).isActive = true
    }

这会将项目绑定到所有边缘,使其与屏幕一样大。 Anchor用于指代游戏中的一个点。这是其超级视图或与您当前视图处于同一级别的某个视图。您可以像self.view.trailingAnchor一样使用引用,也可以添加偏移量和插入view.leadingAnchor.constraint(equalTo: self.view.leadingAnchor, constant: 8).isActive = true。或者,您可以命名label.heightAnchor.constraint(equalToConstant: CGFloat).isActive = true的直接大小。祝你好运

答案 1 :(得分:2)

您可以使用NSLayoutConstraints以编程方式轻松添加约束。下面是它的代码示例。我使用了居中约束,你可以使用高度和宽度的前导和顶部约束。

func addLabel(){
    let newView =UILabel()

        self.view.addSubview(newView)

        newView.translatesAutoresizingMaskIntoConstraints = false
        let horizontalConstraint = NSLayoutConstraint(item: newView, attribute: NSLayoutAttribute.centerX, relatedBy: NSLayoutRelation.equal, toItem: view, attribute: NSLayoutAttribute.centerX, multiplier: 1, constant: 0)
        let verticalConstraint = NSLayoutConstraint(item: newView, attribute: NSLayoutAttribute.centerY, relatedBy: NSLayoutRelation.equal, toItem: view, attribute: NSLayoutAttribute.centerY, multiplier: 1, constant: 0)
        let widthConstraint = NSLayoutConstraint(item: newView, attribute: NSLayoutAttribute.width, relatedBy: NSLayoutRelation.equal, toItem: nil, attribute: NSLayoutAttribute.notAnAttribute, multiplier: 1, constant: 100)
        let heightConstraint = NSLayoutConstraint(item: newView, attribute: NSLayoutAttribute.height, relatedBy: NSLayoutRelation.equal, toItem: nil, attribute: NSLayoutAttribute.notAnAttribute, multiplier: 1, constant: 100)
        NSLayoutConstraint.activate([horizontalConstraint, verticalConstraint, widthConstraint, heightConstraint])
    }

答案 2 :(得分:1)

下面的代码,会在所有d设备上将您的标签贴在右上方,

let aLabel = UILabel()

 self.view.addSubview(aLabel)
 aLabel.backgroundColor = UIColor.gray
 aLabel.text = " i am a label"
 aLabel.textAlignment = .center
 aLabel.translatesAutoresizingMaskIntoConstraints = false

 let horizontalConstraint = NSLayoutConstraint(item: aLabel, attribute: NSLayoutAttribute.trailing, relatedBy: NSLayoutRelation.equal, toItem: view, attribute:NSLayoutAttribute.trailing, multiplier: 1, constant: 0)
 let verticalConstraint = NSLayoutConstraint(item: aLabel, attribute: NSLayoutAttribute.top, relatedBy: NSLayoutRelation.equal, toItem: view, attribute: NSLayoutAttribute.top, multiplier: 1, constant: 0)

 NSLayoutConstraint.activate([horizontalConstraint, verticalConstraint])

 self.view.layoutIfNeeded()
相关问题