CALayer
親レイヤー (レイヤー ホスティングのルート レイヤー) の左下隅に描かれた小さな赤いボックス (インスタンス) を想像してくださいNSView
。
親ビューのフレームが変更されても、赤いボックスは画面上の同じ位置に留まる必要があります。これを行うには、親ビューの左下隅を基準にして位置を調整します。
問題は、場合によってはちらつきがあり、正しい位置に表示される前に、拡張フレームの左下隅に赤いボックス レイヤーが描画されているのが見えることです。
フレームと位置の変更を 1 つにラップするとCATransaction
、両方の変更が一緒に行われると想定しましたが、常に機能するとは限りません (ドキュメントでは、トランザクションを使用するとアニメーションが同時に開始されると書かれていますが、まだ競合があるようです)時々状態)。
NSView
子レイヤーを認識された位置に保ちながら、親のフレームを調整するにはどうすればよいですか?
例とコード:
私自身のアイデア:
赤いボックス レイヤーを非表示にし、位置を更新して、もう一度表示します
制約を使用して、右隅にバインドします。問題は、このオフセットも変更される可能性があり、同じちらつきの問題につながる可能性のある制約を更新する必要があることです。