我查看了以下帖子以了解如何获取 View 底部边缘的 y 坐标:How get bottom y coordinate
它说我可以这样做:exampleView.frame.maxY
但是,当我这样做时,我得到 0。这是我的示例:
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
let thankYouMessage = UILabel()
self.view.addSubview(thankYouMessage)
thankYouMessage.text = "Thank You for Installing the Keyboard"
thankYouMessage.textAlignment = .Center
thankYouMessage.snp_makeConstraints { (make) -> Void in
make.right.left.top.equalTo(self.view)
make.height.equalTo(self.view.frame.height * 0.2)
}
print(thankYouMessage.frame.maxY)
let enableMessage = UILabel()
self.view.addSubview(enableMessage)
enableMessage.text = "Enable the keyboard here:"
enableMessage.textAlignment = .Center
enableMessage.backgroundColor = UIColor.blackColor()
enableMessage.snp_makeConstraints { (make) -> Void in
make.left.equalTo(self.view)
make.top.equalTo(self.view).offset(50)
make.width.equalTo(self.view.frame.width * 0.3)
make.height.equalTo(self.view.frame.height * 0.1)
}
}
print(thankYouMessage.frame.maxY)
返回 0。
我不知道这是为什么。我需要对第一个 View 执行某种初始化过程吗?
最佳答案
在布局过程运行之前, View 的框架不会根据其约束和/或其内在内容大小进行更新。最早可以在 View Controller 中获取 View 的屏幕框架是在 viewDidLayoutSubviews
方法中。
您可以在请求其框架之前在 View 上调用 layoutIfNeeded
或 sizeToFit
,但根据具体情况,如果在 viewDidLoad
.
关于ios - 如何获取 View 的底部边缘?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37557679/