我在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()
答案 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)