我一直试图在另一个视图上叠加一个视图,以模拟Facetime在浏览联系人列表时的覆盖效果。
This is what I am trying to achieve
到目前为止,我已经通过在界面生成器中的幻灯片视图中嵌套覆盖视图来做到这一点。
幻灯片视图包含图像视图和覆盖视图
我对这个解决方案有两个问题:
1)每次将图像视图替换为新图像时,我都必须将其移到后面执行以下操作:

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

2)每当图像视图中的图像被替换时,幻灯片视图用于转换。覆盖视图最终包含在转换中。
问:有没有一种方法可以实现这一点,而不必在覆盖的元素中嵌套覆盖的元素?

最佳答案

我想了个办法。
我在界面生成器的幻灯片视图上方放置了覆盖视图,并在窗口控制器的windowDidLoad()函数中执行了以下操作:
slideView.wantsLayer=真
overlayingView.wantsLayer=真
slideView和overlayingView在控制器中设置为插座。
我以前试过这个,但是我先把覆盖视图的图层设置为true,然后视图会出现在另一个图层的下面。
不要犹豫发布一个更漂亮的解决方案,这个可能只是一个小黑客。

关于macos - 堆叠NSViews,例如Facetime for OS X,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25298478/

10-15 14:21