如果我创建一个矩形对象,例如:
square = UIView(frame: CGRect(x: 100, y: 100, width: 300, height: 100))
square.backgroundColor = UIColor.redColor()
view.addSubview(square)
如何定位它,它始终以所有设备为中心?
答案 0 :(得分:0)
不是直接用计算设置框架,而是必须在旋转下重新设置框架,这可以通过自动布局来完成。
这是一个完整而简单的视图控制器子类,它在其中心添加一个红色子视图,即使在旋转屏幕时也能工作。
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
)
])
}
}
是的,这是很多代码,但它主要是样板 - 我只花了几分钟写这个例子。
如果您使用笔尖或故事板,这会变得更加容易。
答案 1 :(得分:0)
xAxis = superview.frame.size.width / 2 - x.frame.size.width / 2
yAxis = superview.frame.size.height / 2 - x.frame.size.height / 2