而不是直接用计算设置框架,并且必须在旋转下重新进行,这可以通过自动布局来完成。
这是一个完整而简单的视图控制器子类,它在其中心添加了一个红色子视图,即使屏幕旋转也能正常工作。
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
setupSubview()
}
func setupSubview() {
let square = UIView()
square.translatesAutoresizingMaskIntoConstraints = false
square.backgroundColor = .redColor()
view.addSubview(square)
let views = ["square" : square]
let metrics = ["width" : 300, "height" : 100]
view.addConstraints(
NSLayoutConstraint.constraintsWithVisualFormat(
"H:[square(width)]",
options: [],
metrics: metrics,
views: views)
)
view.addConstraints(
NSLayoutConstraint.constraintsWithVisualFormat(
"V:[square(height)]",
options: [],
metrics: metrics,
views: views)
)
view.addConstraints([
NSLayoutConstraint(
item: square,
attribute: .CenterX,
relatedBy: .Equal,
toItem: view,
attribute: .CenterX,
multiplier: 1.0,
constant: 0.0
),
NSLayoutConstraint(
item: square,
attribute: .CenterY,
relatedBy: .Equal,
toItem: view,
attribute: .CenterY,
multiplier: 1.0,
constant: 0.0
)
])
}
}
是的,它有很多代码,但大部分都是样板文件——我只花了几分钟就写了这个例子。
如果您使用笔尖或情节提要,这将变得更加容易。