【发布时间】:2016-05-13 06:11:38
【问题描述】:
我在情节提要中有一个受限于自动布局的视图。我想绘制一个核心图形元素并将其添加到部分重叠视图。问题是定位。在 viewdidlayoutsubviews 完成之前,情节提要视图不会获得最终大小。
如果我尝试在 viewdidlayoutsubviews 方法中绘制重叠元素,viewdidlayoutsubviews 将被再次调用并无限循环。如果我在 viewDidAppear 方法中添加重叠元素,它确实可以正常工作。 viewDidAppear 的问题是元素绘制到屏幕上有半秒的延迟。我希望它与屏幕的其余部分同时绘制和出现。
我有一些关于如何进行的想法
在不可见的情况下在另一个线程上绘制元素,然后在布局完成后将其移动到所需位置并使其可见。
从情节提要中删除元素并以编程方式制作所有元素。
在 viewDidLoad 方法中创建具有自动布局的元素,并让自动布局系统定位它。 (不太确定我会怎么做)
从我所在的位置到屏幕同时绘制所有元素的最佳推荐方法是什么?
【问题讨论】:
-
您是否尝试过在 viewWillAppear 中这样做?另一种选择,虽然不太优雅,是设置一个标志,并在第一次之后将其设置为 false,因此它只执行一次绘图。
-
“我想绘制一个核心图形元素”:核心图形绘制到一个上下文中。提供上下文的是什么?您是在创建
CGImage还是UIImage?您是否在drawRect:的视图中绘图?还有什么? -
上下文来自我 viewDidLoad 中的一个 cgrect。我正在用 drawRect 方法绘制它。
-
viewWillAppear 出现在 viewdidlayoutsubviews 之前,给我一个不正确的元素位置。
标签: ios swift autolayout