【发布时间】:2016-07-01 16:59:27
【问题描述】:
在使用自动布局时,我仍然不明白如何获取 UIView 的更新帧。
假设我:
- 使用自动布局设置一些视图。
- 发出 HTTP 请求以获取一些数据。
- 获得数据后,我想绘制它,但我需要更新后的视图帧大小。
我应该怎么做?
我的猜测,但它是错误的:
layoutMyViews()
makeHttpRequest(callback)
func callback(data: MyData) {
drawData(data, into:dataView)
}
func drawData(data: MyData, into view:UIView) {
let size = view.frame.size
// Here I want to draw data into view, depending on size, but it may be (0,0)
}
【问题讨论】:
-
什么是drawData?除非您重新加载现有的 API 类,例如 tableview,否则您需要手动更新视图以容纳数据,此时您应该知道它的大小。
-
drawData()是我想在view中添加一些内容的地方(我在上面添加了一个示例),但我需要设置view.frame.size。我该怎么做? -
如果你使用自动布局,它已经设置好了
-
使用自动布局,您可以设置约束,但之后会计算帧。如果尚未计算帧,我猜大小可能为 0。
-
加载视图后,您可以访问它的框架。因此,如果您从 viewDidLoad 或在 UIViewController 视图的生命周期上下文中调用您的方法,您可以通过调用 view.frame.size 来访问它的框架属性。
标签: ios swift layout autolayout