次のような 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 サブクラスです。アプリの機能を使用して、1 つ以上の topView を画面外に移動できます。これが発生すると、サムネイルの画像プロパティが無効になります。その topView が画面上に戻ると、image プロパティが復元されます。
問題は、イメージが期待どおりに表示されないことです。それで、私はこれをどのようにやっていますか?
ループでは、GCD を使用してバックグラウンド スレッドで画像プロパティを設定しています。image プロパティを設定したら、 を呼び出します[thumbnail setNeedsDisplay]
。これは、復元された画像が見えるようになると私が期待したものであり、実際、それらのいくつかは表示されますが、表示されないものもあります. GCD の問題が発生していますか?
topView のすべてのサムネイルを再配置するアプリの別の機能があります (位置を再配置するだけです)。その関数を呼び出すと、すべての画像が表示されます。
おそらく重要ですが、そうは思いませんが、topView が表示されると、アニメーションで行われるということです。このようなアニメーション (UIView アニメーション メソッドで行われる) に設定された値は、アニメーションに時間がかかってもすぐに有効になるため、これは重要ではないと思います。
完了ブロックで setNeedsDisplay を呼び出す必要がありますか?