【发布时间】:2016-12-13 20:02:01
【问题描述】:
我有一个 UIView 的子类,它使用 CAShapeLayers 在自身上绘制图片。我希望绘图适应 AutoLayout 给出的 UIView 的任何大小。我给了它一个drawGraph() 函数,它从.bounds.size 获取它的当前大小,然后绘制一张适合的图片。
我首先在容器 UIViewController 的 viewDidLoad() 中调用我的绘图函数,但此时布局尚未发生,因此它具有故事板中的任何边界。
我尝试从视图控制器的viewDidLayoutSubviews() 调用它,但这也不完全令人满意。它被调用了两次:首先使用情节提要的边界,然后再次使用更新的(正确的)边界。中间有一个暂停,因此用户可以看到绘制和重绘。
如何判断 UIView 是否已应用其布局约束并准备好为我提供准确的尺寸?
【问题讨论】:
-
你在
viewWillAppear方法中试过了吗?
标签: ios swift uiview viewdidload viewdidlayoutsubviews