UILabel不在展览中心展示 - Xcode Playground

时间:2018-03-17 00:33:57

标签: swift swift-playground

我在Xcode Playground上运行以下代码。但是,即使我指定标签位于视图中心的中心,它也不会出现在那里。

import UIKit
import PlaygroundSupport

class TestViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        view.backgroundColor = UIColor.white

        let label = UILabel(frame: CGRect(x: 0, y: 0, width: 100, height: 20))
        label.center = CGPoint(x: view.frame.width / 2, y: view.frame.height / 2)
        label.text = "Hello World!"
        label.textColor = UIColor.black
        view.addSubview(label)
    }
}

PlaygroundPage.current.liveView = TestViewController()

enter image description here

2 个答案:

答案 0 :(得分:1)

触发3.14时,

view框架未完成,您需要在方法viewDidLoad内设置标签的框架,因为在完成视图边界时将调用此方法。

<强>尝试

viewDidLayoutSubviews

答案 1 :(得分:1)

视图控制器的视图框架在viewDidLoad中不是最终的。

您需要设置标签的autoresizingMask或应用约束以使其保持在中心位置。

由于您使标签比文字更宽,因此您还需要将标签textAlignment设置为center

let label = UILabel(frame: CGRect(x: 0, y: 0, width: 100, height: 20))
label.center = view.center
label.text = "Hello World!"
label.textColor = .black
label.textAlignment = .center // or call label.sizeToFit()
label.autoresizingMask = [ .flexibleTopMargin, .flexibleBottomMargin, .flexibleLeftMargin, .flexibleRightMargin, ]
view.addSubview(label)