0

我有一个 NSTableView,它包含我所有 NSImageView 的名称,并且根据添加 NSImageViews 的顺序,最后一个将在前面。

但是如果我希望用户能够将 NSImageViews 放在另一个前面,我该怎么做呢?

提前致谢。

4

2 回答 2

2

正如 NSView 参考页所解释的,视图子视图的 z 顺序由它们在视图subviews数组中的 oder 给出。您可以使用 插入相对于其他子视图的新子视图-addSubview:positioned:relativeTo:,并且可以通过获取 subviews属性重新排序现有子视图,根据需要重新排序其中的视图,然后调用-setSubviews:以设置新顺序。

具体来说,文档说:

子视图的顺序可以被认为是从后到前的,但这并不意味着失效和绘制行为。

于 2012-06-20T00:58:59.753 回答
1

我认为您要问的是如何控制视图的 z 顺序。

由于历史性能原因,这在 AppKit 中没有得到很好的支持(与 iOS 中的 UIKit 不同),因为直到最近,您实际上不能有重叠的兄弟视图。

一个常见的方法(在最近的 OS X 版本上)是使用 Core Animation(特别是,CALayer),它确实支持原生 z 排序,但这可能是你需要的过度杀伤力(无论如何都会有一个学习曲线为你)。

你到底想做什么?这些图像(图像视图)是否恰好在彼此之上?如果是这样,最简单(并且性能更好)的方法是拥有一个NSImageView并发-setImage:...送给它以更改显示的图像。

于 2012-06-20T00:46:06.550 回答