【问题标题】:How to center objects on screen in iOS如何在 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)

如何定位它,它总是以所有设备为中心?

【问题讨论】:

  • 您是否尝试过使用自动布局?

标签: ios cocoa-touch uiview uikit


【解决方案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
    

    【讨论】:

      猜你喜欢
      • 2014-03-24
      • 2015-10-29
      • 2020-01-04
      • 2015-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-23
      • 2016-07-01
      相关资源
      最近更新 更多