2016-05-11 2 views
4

私はNSWindowで問題が発生しました。コンテンツビューにはタイトルバーと丸みを帯びたボトムコーナーがあります。私は10.11と10.10の問題をすべて見ています。しかし、ポイントに。setWantsLayerはNSWindowの動作を変更します

ウィンドウのタイトルバーには次のようになります。

enter image description here

ない丸みを帯びた角:

correct titlte bar

と同じ時間下部には、次のようになります。 ウィンドウはプログラムによって開始され、self.contentView addSubview:メソッドを使用してプログラムで追加された2つのサブビューで構成されます。いくつかの作業は、見つけた点画バーのinitウィンドウの先頭に

[self.contentView setWantsLayer:YES]; 

を追加するとこのようになります。その後

enter image description here

フラットと通常の色よりも暗い固体 - ありません良い。私は窓の多くを表示するために許可されていないよ

enter image description here

:私はのように見えるためにそれを必要とするように、他の手の下で が見えます。この出来事(?ウィンドウ要素を描画するために何であるか)、どのように適切に初期化ウィンドウである理由を説明します

[self.contentView setWantsLayer:YES]; 

self.identifier = someid; 
self.styleMask = NSTitledWindowMask | NSClosableWindowMask | NSMiniaturizableWindowMask | NSResizableWindowMask; 
self.backingType = NSBackingStoreBuffered; 
[self setFrame:NSMakeRect(0, 0, windowInitWidth, windowInitHeight) display:NO]; 
[self setBackgroundColor:[NSColor colorForKeyPath:@"blackcolor"]]; 
NSButton *windowButton = [self standardWindowButton:NSWindowCloseButton]; 
[windowButton setEnabled:NO]; 
[self centerOnMainWindowScreen]; 

[self setupLeftPanel]; 
[self setupRightPanel]; 
[self setupConstraints]; 

すべてのヘルプは、感謝: そして、ここでは私の実験とのinitです。 もう一度:両方の方法で10.10で問題なく動作しています。 10.11が破損しています。

+0

暗いタイトルバーはレイヤーではなく背景色によって発生すると思います。 – Sulthan

+0

あなたはコンテンツビューだけを残して、それを塗りつぶしたサブビューを追加して、そのレイヤーバックアップを作成しようとしましたか? –

+0

@シュルハン - 私は色を変えようとしました([self setBackgroundColor:])を白黒にして色を設定しませんでした。 contentViewがレイヤーバックされていない場合、Barは正常です。 – dobry

答えて

0

結局のところ、皆さんは正しいと思います。 完全で検証可能な例を作成できませんでしたが、ウィンドウの背景色を透明な色に変更することにしました。 なぜ私は最初に灰色に設定されていたのか分かりません(タスクを取得したときは灰色でしたが、透明に変更しても後で置かれるコンポーネントには影響しません)。

これは私にとっての解決策ですが、ウィンドウのcontentViewがレイヤーバックされているときにタイトルバーに影響するのはなぜですか?

0

解決策はありませんが、(これは最近ではmacOS 10.12.2)を確実に再現しているため、あなただけではありません。以下を保存して実行してくださいswift

import Cocoa 

let window = NSWindow() 
window.setContentSize(NSSize(width: 100, height: 100)) 
window.center() 

let layeredView = NSView(frame: window.contentView!.frame) 
layeredView.autoresizingMask = [.viewWidthSizable, .viewHeightSizable] 
layeredView.wantsLayer = true 
layeredView.layer!.backgroundColor = NSColor.blue.cgColor 
window.contentView!.addSubview(layeredView) 

window.makeKeyAndOrderFront(nil) 

NSApplication.shared().run() 
関連する問題