6

この行は、Apple の Core Animation ドキュメントに表示されます (リンク: http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/CoreAnimation_guide/SettingUpLayerObjects/SettingUpLayerObjects.html#//apple_ref/doc/uid/TP40004514- CH13-SW5 )

It is recommended that you enable layer support in the content view 
of your window whenever possible.

私の質問は、いつそれを安全に行うことができないのですか?

説明:

Core Animation を使用してアニメーション化 (回転) したい UI のボタンがいくつかあります。そのためには、レイヤーに裏打ちされている必要があります。今のところ、ボタンだけがレイヤーに支えられており、残りのビューはそうではありません。これはうまくいっています。ただし、Apple は上記の文について詳しく説明していないため、親ビューがレイヤーでサポートされていないため、将来のリリースでアニメーションが壊れる可能性があるのではないかと心配しています。

ビュー階層全体をレイヤーバックしたくない理由は 2 つあります。

  1. これにより、メモリ フットプリントが約 230% 増加します。
  2. それは多くのマイナーな不具合を引き起こします (特に私は多くのカスタム描画を行っているため)。

では、あちこちのいくつかのボタンに対してレイヤーバッキングを有効にし、ビュー階層全体に対して有効にしないことは安全ですか? ありがとう!

4

1 に答える 1

3

はい、大丈夫です。あなたがリストした正確な理由から、ビューでレイヤーバッキングを有効にすることを控えるように言っているAppleの以前のドキュメントを見てきました。

引用全体は次のとおりです。

nib ファイルで、View Effects インスペクターを使用して、ビューのレイヤー サポートを有効にします。インスペクタには、選択したビューとそのサブビューのチェックボックスが表示されます。可能な限り、ウィンドウのコンテンツ ビューでレイヤー サポートを有効にすることをお勧めします。

これは、特定のビューについて、ビュー エフェクト インスペクタを表示すると、現在のビューとそのすべてのサブビューのチェックボックスが表示されるということですか? もしそうなら、おそらくドキュメントは、サブビューの設定ではなく、ウィンドウのコンテンツビューに移動し、そこで必要な各ビューのレイヤーバッキングチェックボックスをオンにする必要があることを意味しています。

最近は主に iOS を使用しており、Mac OS ビューをアニメーション化する場合は、通常、アウトレットを作成して setWantsLayer: を呼び出すだけです。

于 2013-02-13T02:21:56.980 に答える