我有一个带有UIView层次结构的应用程序,看起来像这样:

mainView (is always rotated appropriately for the user)
    topView1
        thumbnail1.1
        thumbnail1.2
        thumbnail1.3
    topView2
        thumbnail2.1
        thumbnail2.2
        thumbnail2.3
    topView3
        thumbnail3.1
        thumbnail3.2
        thumbnail3.3


有任意数量的topView(UIView子类),并且每个都有任意数量的缩略图,每个缩略图都是UIImageView子类。使用该应用程序的功能,可以将一个或多个topViews移出屏幕。发生这种情况时,缩略图的图像属性将消失。如果将其topView移回屏幕,则会恢复image属性。

问题是图像未按预期显示。那我该怎么做呢?

在一个循环中,我正在使用GCD在后台线程中设置image属性。设置图像属性后,我调用[thumbnail setNeedsDisplay]。这就是我希望使还原后的图像可见的事实,实际上,其中一些确实出现了,但有些却没有。我是否遇到GCD问题?

该应用程序的另一个功能是重新排列topView上的所有缩略图(它只是重新排列它们的位置)。如果我调用该函数,则所有图像均可见。

也许很重要,但我不这么认为,是当topView进入视图时,它是通过动画完成的。我认为这并不重要,因为为这种动画设置的值(使用UIView动画方法完成)会立即生效,即使动画需要一段时间。

我可能必须在完成块中调用setNeedsDisplay吗?

最佳答案

您只应调用setNeedsDisplay并从主线程设置图像。所有UI更改都必须在主线程上完成。

10-08 05:50