全て、
CATiledLayer から必要な動作を取得できません。最初にタイルの領域が白くクリアされるという副作用なしに、タイルを再描画するようにトリガーできる方法はありますか? すでに CATiledLayer をサブクラス化して、fadeDuration が 0 を返すように設定しました。
具体的には、私が見ていることと達成しようとしていることの詳細を以下に示します。
- 大きなコンテンツサイズの UIScrollView があります...〜12000x800。そのコンテンツ ビューは、CATiledLayer に基づく UIView です。
- UIView は、多くのカスタム描画された線でレンダリングされます
- すべて正常に動作しますが、UIView の内容が変わることがあります。そんな時はなるべくシームレスにタイルを描き直したい。ビューで setNeedsDisplay を使用すると、タイルが再描画されますが、最初に白にクリアされ、新しいコンテンツが描画されるまでに数分の一の遅延があります。すでに CATiledLayer をサブクラス化して、fadeDuration が 0 に設定されるようにしました。
- 私が望む動作は可能であるように思われます...スクロールビューを拡大し、コンテンツがより高い解像度で再描画されると、再描画の前に空白はありません。新しいコンテンツは古いコンテンツの上に描画されます。それが私が探しているものです。
ありがとう; あなたのアイデアに感謝します。
更新:
フォローアップするために-再描画の前にタイルが白くクリアされていないことに気付きました.タイルは完全に取り除かれています。私が見ていた白は、CATiledLayer に裏打ちされたビューの下にあるビューの色です。
簡単なハック/修正として、UIScrollView の下に UIImageView を配置し、CATiledLayer に基づくビューの再描画をトリガーする前に、その可視セクションを UIImageView にレンダリングして表示させます。これにより、再描画が大幅にスムーズになります。
そもそも再描画される前に再描画対象のタイルが消えないようにするなど、誰かがより良い解決策を持っている場合は、それを聞いてみたい.