1

我有一个透明的.png图像,NSView它应该是这样的:

在此处输入图像描述

然而,有时,在没有押韵、理由或迹象表明它会这样做的情况下,NSImageView落后于NSView

在此处输入图像描述

我不知道如何保持NSImageView上面的NSView,或者为什么它甚至落后于NSView

这是 Interface Builder 中的样子: 在此处输入图像描述

更新:

我已经尝试了以下相同的结果:

[header removeFromSuperview];
[mainView addSubview:header positioned:NSWindowAbove relativeTo:nil];

有什么更好的方法可以达到这种效果?

4

3 回答 3

2

重叠的 Cocoa UI 元素具有未定义的绘制顺序,Apple 声明您不应该重叠它们。您可以创建一些自定义绘图代码来使您当前的设计工作。但是,老实说,我会更改设计,使其符合 Mac OS X 的人机界面指南。您可以在下面的链接中阅读这些内容。 http://developer.apple.com/library/mac/#documentation/UserExperience/Conceptual/AppleHIGuidelines/XHIGIntro/XHIGIntro.html%23//apple_ref/doc/uid/TP30000894-TP6

于 2011-02-13T07:48:57.520 回答
2

当您在同一级别上有两个重叠的 NSView 时,未定义绘图顺序。您可以使用 对子视图的绘图进行排序SubviewsUsingFunction:context:。您必须提供基于某个值(例如标签)进行比较的比较函数:

NSComparisonResult viewCompareByTag(NSView *firstView, NSView *secondView, void *context) {
    return ([firstView tag] > [secondView tag]) ? NSOrderedAscending : NSOrderedDescending;
}

[mySuperView sortSubviewsUsingFunction:&viewCompareByTag context:nil];
于 2011-02-13T09:37:03.143 回答
2

原来我不得不重新安排 Interface Builder 中的一些视图,然后在代码中:

[[header layer] setZPosition:1.0f];
于 2011-02-13T20:00:28.260 回答