0

我有一个 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 子类。使用应用程序的功能,可以将一个或多个顶部视图移出屏幕。发生这种情况时,缩略图的图像属性将被取消。如果将其 topView 移回屏幕上,则图像属性将恢复。

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

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

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

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

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

4

2 回答 2

1

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

于 2013-09-30T18:02:56.400 回答
0

setNeedsDisplay 方法应该确保:

[view setNeedsDisplay];
于 2013-09-30T17:21:55.160 回答