ios - iOS 屏幕几何布局是如何工作的?

标签 ios swift swift3

我正在使用 Xcode 8.2、Swift 3。

我正在尝试以编程方式创建一个 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)

这是我看到的:

![enter image description here

这给我带来了很多问题,因为我试图了解这种布局的工作原理,但似乎找不到任何对我有意义的帮助。

我的 screenWidthscreenHeight 分别是 375 和 667。我使用的是 iPhone 7。我将 titleLabel 置于中心,但位于 y: 100。但是考虑到屏幕的高度为 667,标签结束的地方显然看起来不像向下的 1/6。

那么文本定位究竟是如何工作的呢?我知道左上角是原点,仅此而已。

此外,我的文本字段从 x: 50, y: 50 开始,宽度为 screenWidth。那么为什么文本会溢出页面的一侧而不是环绕呢?

非常感谢您的帮助。

最佳答案

我认为如果你正在设置不同 View 的框架(通过构造函数或其他方式),不要设置 .center ,它会影响它的 x 和 y 位置因此为什么他们的定位关闭

关于ios - iOS 屏幕几何布局是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42239919/

相关文章:

ios - 在 iOS 上使用 libPhoneNumber 列出所有国家/地区的代码和调用代码

ios - 如何在 iOS 中使用 FieldValue.serverTimestamp() 作为模型类 - swift

ios - 将图像添加到类似于 UITextField 或其他文本输入 View 的内容

ios - 子类化具有 xib 的子类化 UIViewController

ios - 在 Swift 中从 super 的父类(super class)调用方法

ios - 尝试透明时导航 Controller 黑色

swift3 - 如何在swift中遍历不同类型的ui表元素

ios - 当我尝试构建我的项目时出现以下错误

swift - 我在 CollectionViewCell 中的回调无法正常工作

ios - fatal error : unexpectedly found nil while unwrapping an Optional value during videoURL uploading on Instagram