【发布时间】:2018-01-02 20:53:48
【问题描述】:
有没有办法在 swift 中有一个标签并以编程方式对其进行约束。例如,在所有设备上“固定到顶部”或“固定到右侧”,这样在所有设备上它就可以固定到正在使用的任何设备上。
这是因为我以编程方式创建了一个标签,所以我想对其进行约束。
如果您需要更多信息,请告诉我。谢谢:)
【问题讨论】:
标签: swift
有没有办法在 swift 中有一个标签并以编程方式对其进行约束。例如,在所有设备上“固定到顶部”或“固定到右侧”,这样在所有设备上它就可以固定到正在使用的任何设备上。
这是因为我以编程方式创建了一个标签,所以我想对其进行约束。
如果您需要更多信息,请告诉我。谢谢:)
【问题讨论】:
标签: swift
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
}
这会将项目绑定到所有边缘,使其与屏幕一样大。锚点用于指代游戏中的一个点。这是它的超级视图或与当前视图处于同一级别的某个视图。您可以像我一样使用引用 self.view.trailingAnchor,还可以添加偏移和插入 view.leadingAnchor.constraint(equalTo: self.view.leadingAnchor, constant: 8).isActive = true。或者你可以直接命名某事物的大小label.heightAnchor.constraint(equalToConstant: CGFloat).isActive = true。祝你好运
【讨论】:
您可以使用 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])
}
【讨论】:
下面的代码将在所有 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()
【讨论】: