ios - 如何获得在不同 iPhone 模拟器中使用自动布局的 scrollView 实际大小

标签 ios swift

获取不可变的scrollView的实际大小非常简单(也许你可以将“实际大小”解释为“scrollView可以显示内容的正方形”),因为它是不可变的( 没有布局约束)并且您已经在代码或 Interface Builder 中设置了大小。

但是如果我创建一个带有 autoLayout Constraints 的 Scroll。完成此操作后,我尝试使用不同的 iPhone 模拟器(6s+、6s、5s,)运行该程序并打印以下属性

[myScroll.frame.width; myScroll.frame.height],

[myScroll.bounds.width; myScroll.bounds.heigth]

[myScroll.contentSize.width; myScroll.contentSize.height]

它们要么是 (0,0) 要么是 (immutableNum,immutableNum)

Obviously, the size can't be zero or any immutable numbers when iPhone size changed, right?

那么 a 如何访问 scrollView 的真实大小呢?或者我应该问我应该访问哪个属性?

感谢您的观看!

最佳答案

当您需要使用自动布局访问任何 UI 尺寸或位置时,您必须在实际计算布局后执行此操作。

根据经验,最好的地方是在 viewDidLayoutSubviews 方法中。
viewDidLoad 中,还没有计算布局。这就是为什么您会得到零值或奇怪的值。

关于ios - 如何获得在不同 iPhone 模拟器中使用自动布局的 scrollView 实际大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33299922/

相关文章:

swift - 索引(: Int) method of Range in swift return incorrect value

ios - 通过展开 segue 传递变量

ios - Swift 异步打印顺序?

ios - 不使用 UIApplication.delegate 获取方向?

ios - Parse 中的查询指针 (ios)

ios - Swift Firebase iOS didReceiveRemoteNotification 从不调用

ios - Swift 二维数组最小值

ios - NSObject 在加载 viewDidLoad() 之前似乎没有初始化

具有多个可见页面的 iOS UIScrollView

ios - Swift 在 MFMailComposeViewController didFinishWith 结果中显示警报