我在情节提要中有一个受自动布局约束的视图。 我想绘制一个核心图形元素并添加它以部分重叠视图。 问题在于定位。 在视图布局子视图完成之前,情节提要视图不会获得其最终大小。
如果我尝试在 viewdidlayoutsubviews 方法中绘制重叠元素,则 viewdidlayoutsubviews 将再次调用并无限循环。 如果我在 viewDidSeem 方法中添加重叠元素,它确实可以正常工作。 viewDidAppear 的问题是元素绘制到屏幕上有半秒的延迟。 我希望它同时绘制并与屏幕的其余部分一起出现。
我对如何进行有一些想法
-
在另一个不可见的线程上绘制元素,然后在布局完成后将其移动到所需位置并使其可见。
-
从情节提要中删除元素,并以编程方式创建所有元素。
-
在 viewDidLoad 方法中使用自动布局创建元素,并让自动布局系统定位它。(不太确定我会怎么做(
从我所在的位置到同时绘制所有元素的最佳推荐方法是什么?
如何从 viewDidLayoutSubviews 调用 GC 元素的 setNeedsDisplay(((或任何绘制方式(
你可以像这样使用 GCD 的dispatch_once:
var token : dispatch_once_t = 0
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
dispatch_once(&token, { () -> Void in
cgthing.setNeedsDisplay()
}) ...
}