堆栈NSView像Facetime for OS X.

时间:2014-08-14 00:54:33

标签: macos cocoa swift interface-builder

在浏览联系人列表时,我一直试图将视图叠加在另一个视图之上,以模仿Facetime的叠加效果。

This is what I am trying to achieve

enter image description here

到目前为止,我已设法通过在界面构建器中的幻灯片视图中嵌套覆盖视图来实现这一目标。

幻灯片视图包含图像视图和覆盖视图

这个解决方案有两个问题:

1)每次将图像视图替换为新图像时,我必须将其移到后面执行此操作:

self.currentImageView!.removeFromSuperview();
self.animator().addSubview(newImageView!, positioned: NSWindowOrderingMode.Below, relativeTo: nil)

2)只要替换了图像视图中的图像,就会使用幻灯片视图进行转换。 覆盖视图最终会包含在转换中。

问题:有没有办法实现这一点,而不必将覆盖元素嵌套在它覆盖的元素中?

1 个答案:

答案 0 :(得分:0)

我想办法做到这一点。

我将Overlaying View置于界面构建器的Slide View上方,并在Window Controller的windowDidLoad()函数中执行以下操作:

slideView.wantsLayer = true overlaying.wantsLayer = true

slideView和overlayingView设置为控制器中的插座。

我之前尝试过这个,但是我首先将overlayView的图层设置为true,而视图将显示在另一个图层下。

不要犹豫发布一个更漂亮的解决方案,这可能只是一个小黑客。