objective-c - 处理层支持的 IKImageBrowserView、Z 顺序和其他问题

标签 objective-c cocoa catransition ikimagebrowserview ikimagebrowsercell

我正在从事一个项目,需要:

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

我遇到的问题如下:

  • 如果 IKImageBrowserView 不支持图层,则它不遵循 z 顺序 --> IKImageBrowserView 保持在顶部,无论是否有 View 位于其顶部(或就此而言位于其中)
  • 如果图像浏览器 View 是图层支持的,则 z 顺序问题得到解决,但 IKImageBrowserView 中的自定义行为中断(例如悬停)--> 例如,在 Mac 10.7 中,选择层和前景层浏览器单元格不会随着 ScrollView “反弹”区域中的图像移动。

我需要图层支持来制作过渡动画。

出于性能原因,我知道 Apple 不建议兄弟 View 重叠。但在某些情况下,这是无法避免的。

我已就此向 Apple 提交技术支持事件。他们已将其上报给工程师,但他们也建议我提交错误报告。

以前有没有人遇到过这个问题?如果有,您采用了什么解决方法?


对于任何好奇的人,示例项目在这里 https://github.com/jdbenito/nerdery .在应用委托(delegate)中,尝试注释/取消注释 -setWantsLayer: 行。

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

最佳答案

NSView siblings 绝对允许重​​叠。我前一段时间也有同样的问题,得到了一些苹果工程师的确认:Are layer-backed NSView siblings allowed to overlap?

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

希望这对您有所帮助!

关于objective-c - 处理层支持的 IKImageBrowserView、Z 顺序和其他问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13301118/

相关文章:

iphone - 在 Three20 中使用 CATransition?

iphone - 解雇ModalViewController与过渡: left to right

ios - Estimote SDK 的 undefined symbol 链接器失败

iphone - 同时在 iPhone 中播放两个视频

objective-c - 调整 NSMatrix 中 ButtonCell 的大小

macos - 在 OS X 上使用 NSPanGestureRecognizer 拖动 SKNode 时闪烁

iphone - 如何更新 NSUserDefault

ios - 如何在 iOS 中恢复非消耗品的 IAP

objective-c - 当我将对象替换或插入到 nsmutable 数组中时,出现异常

iOS 8 CATransition - 屏幕外的幻灯片 View