如何在 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 中使对象在屏幕上居中的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Html 中使按钮居中? [复制]

如何在ios objective-c 应用程序中使屏幕的全部内容滚动

如何在Javascript中使按钮居中

如何在约束布局 1.0 中使视图居中

如何在 Material-UI 中使按钮居中

如何在 Jquery Mobile ListView 控件中使图像垂直居中?