6

私は次のことを行う必要のあるプロジェクトに取り組んでいます:

  • IKImageBrowserViewを含むビューから別のビューへの遷移アニメーションがあります。
  • マウスがビュー上を移動するときに、各IKImageBrowserCellにホバーオーバーレイを配置します。と
  • NSViewを画像ブラウザビューの一部とオーバーラップさせる

私が抱えている問題は次のとおりです。

  • IKImageBrowserViewは、レイヤーバックされていない場合、z順序を尊重しません-> IKImageBrowserViewは、ビューがその上にある場合でも(またはその上にある場合でも)、一番上に留まります
  • 画像ブラウザビューがレイヤーバックの場合、z順序の問題は解決されますが、IKImageBrowserViewのカスタム動作が壊れます(ホバーなど)->たとえば、Mac 10.7では、ブラウザセルの選択レイヤーとフォアグラウンドレイヤースクロールビューの「バウンス」ゾーンで画像と一緒に移動しないでください。

トランジションアニメーションを実行するには、レイヤーバッキングが必要です。

パフォーマンス上の理由から、Appleは兄弟ビューの重複を推奨していないことを認識しています。これは避けられない場合もあります。

これについてAppleにテクニカルサポートインシデントを提出しました。彼らはそれをエンジニアにエスカレートしましたが、バグレポートを提出するように私にアドバイスしました。

誰かが以前にこれに遭遇したことがありますか?もしそうなら、あなたはどのような回避策を採用しましたか?


興味のある人のために、サンプルプロジェクトはここhttps://github.com/jdbenito/nerderyにあります。アプリデリゲートで、-setWantsLayer:行のコメント化/コメント解除を試してください。

IKImageBrowserViewは、レイヤーバックされると奇妙な動作を示し始めます。また、症状はOSによって異なります(たとえば、Mac OS 10.6では、ホバーは別のタブに切り替えてIKImageBrowserViewに戻るまで機能します。MacOS10.8では、ホバーレイヤーが正しいセルに表示されないようです) 。

4

1 に答える 1

0

NSView 兄弟は確実にオーバーラップできます。少し前に同じ質問をして、何人かの Apple エンジニアから確認を得ました。

IKImageBrowserView について: iOS の UITableView のように、多かれ少なかれ「ブラック ボックス」として使用することを意図しているという印象を受けています。サブビューを直接追加することによる内部ビュー階層。標準の文書化された動作以外に何かが必要な場合は、独自のソリューションを作成する方がよい場合があります。特に、すべてのサムネイルとプレビューのニーズに対して Image I/O にアクセスできるため、これを行うのはそれほど難しくありません: https://developer.apple.com/library/mac/documentation/graphicsimaging/Conceptual/ImageIOGuide/ imageio_source/ikpg_source.html#//apple_ref/doc/uid/TP40005462-CH218-SW3

お役に立てれば!

于 2013-10-17T15:54:35.293 に答える