我有一个带有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
有任意数量的topViews(UIView子类),每个都有任意数量的缩略图,每个缩略图都是UIImageView子类。使用应用程序的功能,可以将一个或多个topView移出屏幕。发生这种情况时,缩略图的图像属性将被填空。如果将topView移回屏幕,则会恢复图像属性。
问题是图像没有按预期显示。那我该怎么做呢?
在循环中,我使用GCD在后台线程中设置image属性。设置图像属性后,我调用[thumbnail setNeedsDisplay]
。这是我期望使恢复的图像可见,并且事实上,其中一些确实出现,但有些没有。我遇到了GCD问题吗?
该应用程序的另一个功能是重新排列topView上的所有缩略图(它只是重新排列其位置)。如果我调用该函数,则所有图像都可见。
也许很重要,但我不这么认为,当topView进入视图时,它是通过动画完成的。我不认为这很重要,因为为这样的动画设置的值(使用UIView动画方法完成)会立即生效,即使动画需要一段时间。
我是否可能必须在完成块中调用setNeedsDisplay?
答案 0 :(得分:1)
您应该只调用setNeedsDisplay
并从主线程设置图像。所有UI更改都必须在主线程上完成。
答案 1 :(得分:0)
setNeedsDisplay方法应该确保:
[view setNeedsDisplay];