如何在 iOS 中使对象在屏幕上居中
Posted
技术标签:
【中文标题】如何在 iOS 中使对象在屏幕上居中【英文标题】:How to center objects on screen in iOS 【发布时间】:2015-09-30 12:01:37 【问题描述】:如果我像这样创建一个矩形对象:
square = UIView(frame: CGRect(x: 100, y: 100, width: 300, height: 100))
square.backgroundColor = UIColor.redColor()
view.addSubview(square)
如何定位它,它总是以所有设备为中心?
【问题讨论】:
您是否尝试过使用自动布局? 【参考方案1】:而不是直接用计算设置框架,并且必须在旋转下重新进行,这可以通过自动布局来完成。
这是一个完整而简单的视图控制器子类,它在其中心添加了一个红色子视图,即使屏幕旋转也能正常工作。
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
)
])
是的,它有很多代码,但大部分都是样板文件——我只花了几分钟就写了这个例子。
如果您使用笔尖或情节提要,这将变得更加容易。
【讨论】:
【参考方案2】:xAxis = superview.frame.size.width / 2 - x.frame.size.width / 2
yAxis = superview.frame.size.height / 2 - x.frame.size.height / 2
【讨论】:
以上是关于如何在 iOS 中使对象在屏幕上居中的主要内容,如果未能解决你的问题,请参考以下文章