UILabel 未显示在视图中心 - Xcode 游乐场
UILabel isn't Displaying at Center of View - Xcode Playground
我在 Xcode 游乐场上有以下代码 运行。但是,即使我指定标签位于视图的中心,它也不会出现在那里。
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()
view
frame 在触发viewDidLoad
时未完成,需要在方法viewDidLayoutSubviews
中设置label 的frame,因为此方法在view bound 时被调用敲定。
尝试
class TestViewController: UIViewController {
let label = UILabel(frame: CGRect(x: 0, y: 0, width: 100, height: 20))
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = UIColor.white
label.text = "Hello World!"
label.textColor = UIColor.black
self.view.addSubview(label)
}
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
self.label.center = self.view.center
}
}
视图控制器的视图框架在 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)
我在 Xcode 游乐场上有以下代码 运行。但是,即使我指定标签位于视图的中心,它也不会出现在那里。
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()
view
frame 在触发viewDidLoad
时未完成,需要在方法viewDidLayoutSubviews
中设置label 的frame,因为此方法在view bound 时被调用敲定。
尝试
class TestViewController: UIViewController {
let label = UILabel(frame: CGRect(x: 0, y: 0, width: 100, height: 20))
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = UIColor.white
label.text = "Hello World!"
label.textColor = UIColor.black
self.view.addSubview(label)
}
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
self.label.center = self.view.center
}
}
视图控制器的视图框架在 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)