iOS 自动布局坐标并以编程方式绘制视图



我在情节提要中有一个受自动布局约束的视图。 我想绘制一个核心图形元素并添加它以部分重叠视图。 问题在于定位。 在视图布局子视图完成之前,情节提要视图不会获得其最终大小。

如果我尝试在 viewdidlayoutsubviews 方法中绘制重叠元素,则 viewdidlayoutsubviews 将再次调用并无限循环。 如果我在 viewDidSeem 方法中添加重叠元素,它确实可以正常工作。 viewDidAppear 的问题是元素绘制到屏幕上有半秒的延迟。 我希望它同时绘制并与屏幕的其余部分一起出现。

我对如何进行有一些想法

  1. 在另一个不可见的线程上绘制元素,然后在布局完成后将其移动到所需位置并使其可见。

  2. 从情节提要中删除元素,并以编程方式创建所有元素。

  3. 在 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()
    })        ...
}

最新更新