ios - 如何获取 View 的底部边缘?

标签 ios swift

我查看了以下帖子以了解如何获取 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 上调用 layoutIfNeededsizeToFit ,但根据具体情况,如果在 viewDidLoad.

关于ios - 如何获取 View 的底部边缘?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37557679/

相关文章:

ios - itunes connect,上传后应用程序大小没有意义

ios - 类型 'Item' 的值没有成员 'parentCategory'

swift - “NSInputStream”没有名为 'setDelegate' 的成员

swift - UICollectionView 中的节标题,只出现第一个

ios - Xcode 6 给出 CFNetwork 内部错误

android - flutter 错误: Undefined name 'ScaffoldMessenger'

ios - 无法将类型 'Anyobject!' 的值转换为预期的参数类型 'Int'

swift - TouchesMoved swift 滞后

ios - Swift:如何在 IOS 9+ 中切换状态栏方向?

ios - iPhone、Xcode、有效架构的重要性