Isu*_*uru 18 uiview uilabel ios autolayout swift
我已经UIView在视图控制器上添加了一个IB.我们称之为redView.

然后我在代码中使用自动布局约束固定了它的所有四个边,当我运行它时,它看起来像预期的那样.

现在我想以UILabel编程方式向该视图添加一个并使用自动布局约束将其定位在中心.
下面是我到目前为止的代码.
import UIKit
class ViewController: UIViewController {
@IBOutlet private var redView: UIView!
override func viewDidLoad() {
super.viewDidLoad()
redView.setTranslatesAutoresizingMaskIntoConstraints(false)
let leadingConstraint = NSLayoutConstraint(item: redView, attribute: .Leading, relatedBy: .Equal, toItem: view, attribute: .Leading, multiplier: 1, constant: 0)
let trailingConstraint = NSLayoutConstraint(item: redView, attribute: .Trailing, relatedBy: .Equal, toItem: view, attribute: .Trailing, multiplier: 1, constant: 0)
let topConstraint = NSLayoutConstraint(item: redView, attribute: .Top, relatedBy: .Equal, toItem: view, attribute: .Top, multiplier: 1, constant: 0)
let bottomConstraint = NSLayoutConstraint(item: redView, attribute: .Bottom, relatedBy: .Equal, toItem: view, attribute: .Bottom, multiplier: 1, constant: 0)
view.addConstraints([leadingConstraint, trailingConstraint, topConstraint, bottomConstraint])
let label = UILabel()
label.text = "Auto Layout Exercise"
redView.addSubview(label)
let xCenterConstraint = NSLayoutConstraint(item: label, attribute: .CenterX, relatedBy: .Equal, toItem: redView, attribute: .CenterX, multiplier: 1, constant: 0)
let yCenterConstraint = NSLayoutConstraint(item: label, attribute: .CenterY, relatedBy: .Equal, toItem: redView, attribute: .CenterY, multiplier: 1, constant: 0)
let leadingConstraint1 = NSLayoutConstraint(item: label, attribute: .Leading, relatedBy: .Equal, toItem: redView, attribute: .Leading, multiplier: 1, constant: 20)
let trailingConstraint1 = NSLayoutConstraint(item: label, attribute: .Trailing, relatedBy: .Equal, toItem: redView, attribute: .Trailing, multiplier: 1, constant: -20)
redView.addConstraints([xCenterConstraint, yCenterConstraint, leadingConstraint1, trailingConstraint1])
}
}
Run Code Online (Sandbox Code Playgroud)
问题是标签没有出现在redView.谁能告诉我我在这里缺少什么?
谢谢.
Gly*_*ard 37
我很确定你还需要设置:
label.setTranslatesAutoresizingMaskIntoConstraints(false)
Run Code Online (Sandbox Code Playgroud)
否则我认为约束不适用于标签.
Nik*_*tin 13
Swift 2/3的注意事项
它已更改为布尔属性:UIView.translatesAutoresizingMaskIntoConstraints
而不是以前:
label.setTranslatesAutoresizingMaskIntoConstraints(false)
Run Code Online (Sandbox Code Playgroud)
就是现在:
label.translatesAutoresizingMaskIntoConstraints = false
Run Code Online (Sandbox Code Playgroud)
您需要为每个 UIControl 执行此操作以分配 NSConstraints
label.translatesAutoresizingMaskIntoConstraints = false
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
24597 次 |
| 最近记录: |