z 排序如何与 Cocoa 中的兄弟 NSView 一起工作?我很困惑,因为我在 Apple 的文档和 API 中发现了相互冲突的信息来源。 (注意: subview 显然是在其父 View 之上呈现的,我在这里明确谈论同级 View )。
假设 A:“是的,您可以定义同级 NSViews
的 z 顺序”
- 在
IB
中,您可以将 View 放置在彼此之上,它们将始终按照您期望的方式组合。 - Xcode 中的
Editor
菜单下有一些名为“Send to Back”、“Send Forward”等的按钮。 NSView
还有一个名为- (void)addSubview:(NSView *)aView located:(NSWindowOrderingMode)placerelativeTo:(NSView *)otherView;
的方法似乎暗示有一个明确定义的顺序。
假设 B:“不可能,同级 NSViews
的 z 顺序在运行时未定义。有时有效,有时无效。Don'不要相信它!”
- Apple 文档 ( View Programming guide ) 声明:
出于性能原因,Cocoa 不会强制在同级 View 之间进行裁剪,也不会在同级 View 重叠时保证正确的失效和绘制行为。如果您希望一个 View 绘制在另一个 View 的前面,则应该使前 View 成为后 View 的 subview (或后代)。
那么它是哪一个呢?
最佳答案
是的,NSView 兄弟可以重叠,Apple 文档已过时:Are layer-backed NSView siblings allowed to overlap?
此外,z 顺序取决于父 View 的 subviews
数组中 subview 的顺序。
关于macos - Cocoa 中的同级 NSView z 排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14750393/