我有一个 NSTableView,它包含我所有 NSImageView 的名称,并且根据添加 NSImageViews 的顺序,最后一个将在前面。
但是如果我希望用户能够将 NSImageViews 放在另一个前面,我该怎么做呢?
提前致谢。
我有一个 NSTableView,它包含我所有 NSImageView 的名称,并且根据添加 NSImageViews 的顺序,最后一个将在前面。
但是如果我希望用户能够将 NSImageViews 放在另一个前面,我该怎么做呢?
提前致谢。
正如 NSView 参考页所解释的,视图子视图的 z 顺序由它们在视图subviews
数组中的 oder 给出。您可以使用 插入相对于其他子视图的新子视图-addSubview:positioned:relativeTo:
,并且可以通过获取 subviews
属性重新排序现有子视图,根据需要重新排序其中的视图,然后调用-setSubviews:
以设置新顺序。
具体来说,文档说:
子视图的顺序可以被认为是从后到前的,但这并不意味着失效和绘制行为。
我认为您要问的是如何控制视图的 z 顺序。
由于历史性能原因,这在 AppKit 中没有得到很好的支持(与 iOS 中的 UIKit 不同),因为直到最近,您实际上还不能有重叠的兄弟视图。
一个常见的方法(在最近的 OS X 版本上)是使用 Core Animation(特别是,CALayer
),它确实支持原生 z 排序,但这可能是你需要的过度杀伤力(无论如何都会有一个学习曲线为你)。
你到底想做什么?这些图像(图像视图)是否恰好在彼此之上?如果是这样,最简单(并且性能更好)的方法是拥有一个NSImageView
并发-setImage:...
送给它以更改显示的图像。