swift中是否有一种方法可以通过编程方式获得标签并对其进行约束。例如,在所有设备上“固定到顶部”或“固定到右侧”,这样在所有设备上它只会固定在正在使用的设备上。
这是因为我以编程方式创建了一个标签,所以我想为它制作约束。
如果您需要更多信息,请告诉我们。谢谢:))
答案 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()