1

に重なる透明な.png画像があり、次のNSViewようになります。

ここに画像の説明を入力してください

ただし、場合によっては、韻や理由、またはこれを実行することを示すものがないため、 :NSImageViewに遅れをとることがあります。NSView

ここに画像の説明を入力してください

NSImageView上記を維持する方法NSView、またはなぜそれが遅れるのかわかりませんNSView

InterfaceBuilderでの表示は次のとおりです。 ここに画像の説明を入力してください

アップデート:

私は同じ結果で以下を試しました:

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

この効果を達成するためのより良い方法は何ですか?

4

3 に答える 3

2

オーバーラップするCocoaUI要素には未定義の描画順序があり、Appleはそれらをオーバーラップさせてはならないと述べています。カスタム描画コードを作成して、現在のデザインを機能させることができます。ただし、正直なところ、MacOSXのヒューマンインターフェイスガイドラインに一致するようにデザインを変更します。これらについては、以下のリンクで読むことができます。 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

同じレベルに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 に答える