iOS Swift 游乐场视图未居中
iOS Swift Playgrounds Views Are Not Centered
所以图片说明了一切。我基本上有一个标题,并将标签的宽度设置为整个视图的宽度,并且文本对齐方式居中。但是,很明显它有点偏右。我认为游乐场视图切断了一部分视图。谁能告诉我如何正确居中 UILabel 吗?谢谢!
import UIKit
import PlaygroundSupport
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let title = UILabel(frame: CGRect(x: 0, y: 5, width: view.frame.width, height: 60))
title.textAlignment = .center
title.text = "Hello World!"
title.font = UIFont.systemFont(ofSize: 30, weight: .bold)
title.textColor = .white
self.view.addSubview(title)
}
}
PlaygroundPage.current.liveView = ViewController()
在 viewDidLoad
中基于视图控制器的视图框架设置视图框架可能会导致预期的布局,因为在调用 viewDidLoad
时自动布局尚未完成其布局传递。您应该从 viewDidLayoutSubviews
设置标签的框架。例如:
import UIKit
import PlaygroundSupport
class ViewController: UIViewController {
let titleLabel = UILabel(frame: .zero)
override func viewDidLoad() {
super.viewDidLoad()
titleLabel.textAlignment = .center
titleLabel.text = "Hello World!"
titleLabel.font = UIFont.systemFont(ofSize: 30, weight: .bold)
titleLabel.textColor = .white
self.view.addSubview(titleLabel)
}
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
titleLabel.frame = CGRect(x: 0, y: 5, width: view.frame.width, height: 60)
}
}
PlaygroundPage.current.liveView = ViewController()
所以图片说明了一切。我基本上有一个标题,并将标签的宽度设置为整个视图的宽度,并且文本对齐方式居中。但是,很明显它有点偏右。我认为游乐场视图切断了一部分视图。谁能告诉我如何正确居中 UILabel 吗?谢谢!
import UIKit
import PlaygroundSupport
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let title = UILabel(frame: CGRect(x: 0, y: 5, width: view.frame.width, height: 60))
title.textAlignment = .center
title.text = "Hello World!"
title.font = UIFont.systemFont(ofSize: 30, weight: .bold)
title.textColor = .white
self.view.addSubview(title)
}
}
PlaygroundPage.current.liveView = ViewController()
在 viewDidLoad
中基于视图控制器的视图框架设置视图框架可能会导致预期的布局,因为在调用 viewDidLoad
时自动布局尚未完成其布局传递。您应该从 viewDidLayoutSubviews
设置标签的框架。例如:
import UIKit
import PlaygroundSupport
class ViewController: UIViewController {
let titleLabel = UILabel(frame: .zero)
override func viewDidLoad() {
super.viewDidLoad()
titleLabel.textAlignment = .center
titleLabel.text = "Hello World!"
titleLabel.font = UIFont.systemFont(ofSize: 30, weight: .bold)
titleLabel.textColor = .white
self.view.addSubview(titleLabel)
}
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
titleLabel.frame = CGRect(x: 0, y: 5, width: view.frame.width, height: 60)
}
}
PlaygroundPage.current.liveView = ViewController()