我使用的Xcode 8.2,斯威夫特3iOS屏幕几何图形的布局如何工作?
我想以编程方式创建UIViewController
一些文本(和将来,一些图形)屏幕上的内容。通常情况下,这与Storyboard很容易做到,但由于这个ViewController是以编程方式创建的,所以我必须这样工作。
这是到目前为止我的代码:
let detailViewController = UIViewController()
detailViewController.view.backgroundColor = UIColor.white
let screenSize = UIScreen.main.bounds
let screenWidth = screenSize.width
let screenHeight = screenSize.height
let titleLabel = UILabel(frame: CGRect(x: 20, y: 20, width: screenWidth, height: 20))
titleLabel.center = CGPoint(x: screenWidth/2, y: 100)
titleLabel.backgroundColor = UIColor.red
titleLabel.textAlignment = .center
titleLabel.text = "Scan Results"
titleLabel.font = UIFont.boldSystemFont(ofSize: 14)
let myField: UITextView = UITextView (frame: CGRect(x: 50, y: 50, width: screenWidth, height: 300))
myField.center = CGPoint(x: screenWidth/2, y: 250)
myField.backgroundColor = UIColor.green
myField.text = <really long string here>
detailViewController.view.addSubview(titleLabel)
detailViewController.view.addSubview(myField)
这是我所看到的:
这引发了很多问题要问我,因为我想了解如何布局的作品,但似乎无法找到任何对我有意义的帮助。
我的screenWidth
和screenHeight
分别是375和667。我正在使用iPhone 7.我已将titleLabel
定位在中心位置,但位于y: 100
。但是,如果标签的最终结果看起来不像1/6,因为屏幕的高度为667.
那么文本定位究竟如何工作?我知道左上角是原点,但这就是它。
此外,我开始我的文本字段在x: 50, y: 50
宽度为screenWidth
。那么为什么文本溢出页面而不是环绕?
非常感谢您的帮助。
更改您的标签背景的颜色,以便您可以看到发生了什么更好。如果标签占据了整个空白空间,那么这有些是正确的行为,文本始终在标签的垂直中心,并且可能只设置为单行。 – Fonix
哦,等等,为什么myField是' UITextField'?你的意思是使用'UITextView'吗? – Fonix
好眼睛。让我进行这些更改并更新我的问题。 – noblerare