我有一个NSTableView,它拥有我所有NSImageView的名称,并且根据添加NSImageViews的顺序,最后一个将在前面。
但是在我希望用户能够将NSImageViews放在另一个用户面前的情况下,我该怎么做?
提前致谢。
答案 0 :(得分:2)
如NSView参考页面所述,视图的子视图的z顺序由视图的subviews
数组中的oder给出。您可以使用-addSubview:positioned:relativeTo:
插入相对于其他子视图的新子视图,并且可以通过获取subviews
属性,根据需要重新排序其中的视图,然后调用-setSubviews:
来重新排序现有子视图设置新订单。
具体来说,文档说:
子视图的顺序可以被视为从后到前, 但这并不意味着无效和绘画行为。
答案 1 :(得分:1)
我想,你要问的是如何控制视图的z顺序。
由于历史性能原因,这在AppKit中得不到很好的支持(与iOS中的UIKit不同),因为直到最近,你才能真正拥有重叠的兄弟视图。
对此(在最近的OS X版本中)的一种常见方法是使用核心动画(特别是CALayer
),它本身支持z排序,但这可能是你所需要的(或在任何事件都会为你带来学习曲线。)
你到底想要做什么?这些图像(图像视图)是否恰好相互叠加?如果是这样,那么最简单(效果更好)的方法就是拥有一个NSImageView
并向其发送-setImage:...
来更改显示的图像。