设置约束后 Swift 获取实际视图大小

Posted

技术标签:

【中文标题】设置约束后 Swift 获取实际视图大小【英文标题】:Swift get actual view size after setting constraints 【发布时间】:2020-06-06 10:43:09 【问题描述】:

我如何获得实际的视图大小? 现在我从gameView.frame.size得到它 它确实给了我设置的正确值,但它没有给我实际的大小。

例如: 在我的故事板中,我有一部 iPhone 11,我画了一个宽度为:375 和高度为:375 的框架。

现在我模拟了一个 iPad,框架确实有正确的约束,但它仍然给我 375-375 的值,但这不是实际大小。

【问题讨论】:

【参考方案1】:

您有几个选择;根据您的用例:

    使用以下方法获取您的框架:

    DispatchQueue.main.async 
      //print(self.view.frame)
    
    

    viewDidAppear中获取更新后的帧值

    viewDidLayoutSubviews 中获取更新后的帧值。但要小心这被多次调用。

【讨论】:

以上是关于设置约束后 Swift 获取实际视图大小的主要内容,如果未能解决你的问题,请参考以下文章

Swift iOS以编程方式在导航栏下方设置scrollView约束

uitableview 内容大小未正确返回 swift

Swift,Tableview 约束行为不正常 - Xcode 9

Swift编程约束下边距不起作用

Swift 3 - 自定义 UIButton 半径删除约束?

为啥设置约束后不能再调整 NSWindow 的大小?