处理层支持的IKImageBrowserView,Z排序和其他问题

Joh*_*ver 6 cocoa objective-c ikimagebrowserview catransition ikimagebrowsercell

我正在开发一个需要的项目:

  • 从包含IKImageBrowserView的视图到另一个视图的过渡动画;
  • 当鼠标在视图中移动时,在每个IKImageBrowserCell上都有一个悬停覆盖; 和
  • 让NSView重叠图像浏览器视图的一部分

我遇到的问题如下:

  • 如果IKImageBrowserView不是图层支持,则它不遵循z排序 - >即使视图位于其上(或者在其中),IKImageBrowserView仍保持在顶部
  • 如果图像浏览器视图是图层支持的,则z-ordering问题得到解决,但IKImageBrowserView中的自定义行为会中断(例如悬停) - >在Mac 10.7中,例如,选择层和浏览器单元格的前景层不要随着滚动视图的"反弹"区域中的图像移动.

我需要图层支持来完成过渡动画.

出于性能原因,我知道Apple并不建议重叠兄弟视图.有些情况虽然无法避免.

我已经向Apple提交了一份技术支持事件.他们已将其升级为工程师,但他们还建议我提交错误报告.

有没有人遇到过这个问题,如果有的话,你采用了哪些解决方法?


对于任何好奇的人来说,示例项目都在这里https://github.com/jdbenito/nerdery.在app delegate中,尝试注释/取消注释-setWantsLayer:行.

IKImageBrowserView在层支持时开始表现出奇怪的行为.并且症状因操作系统而异(例如,在Mac OS 10.6中,悬停工作直到您切换到另一个选项卡并返回到IKImageBrowserView.在Mac OS 10.8中,悬停层似乎无法在正确的单元格中呈现) .

Joh*_*rug 0

NSView 兄弟姐妹绝对允许重​​叠。不久前我也有同样的问题,并得到了一些苹果工程师的确认:是否允许图层支持的 NSView 兄弟姐妹重叠?

关于 IKImageBrowserView:我的印象是它或多或少被用作“黑匣子”,很像 iOS 上的 UITableView:您可以自定义单元格和一些行为,但最好不要弄乱它通过直接向其添加子视图来构建内部视图层次结构。如果您除了标准的、记录的行为之外还需要任何东西,那么您最好编写自己的解决方案。这应该不是很难做到的,特别是因为您可以访问图像 I/O 来满足所有缩略图和预览需求:https ://developer.apple.com/library/mac/documentation/graphicsimaging/Conceptual/ImageIOGuide/ imageio_source/ikpg_source.html#//apple_ref/doc/uid/TP40005462-CH218-SW3

希望这可以帮助!