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

时间:2012-11-09 02:09:24

标签: objective-c cocoa catransition ikimagebrowserview 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中,悬停层似乎无法在正确的单元格中呈现)

1 个答案:

答案 0 :(得分:0)

绝对允许NSView兄弟姐妹重叠。我刚才有同样的问题,得到了一些Apple工程师的确认:Are layer-backed NSView siblings allowed to overlap?

关于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

希望这有帮助!