2016-03-23 13 views
3

私はNSPopoverを使用しています。NSViewControllerをNSStatusItemからカスタムビューとして表示するようにしています。ほとんどのビューコントローラは、角の半径を持つNSButtonを除いて正しく表示されます。丸みを帯びたコーナーが適用されているところに余分な白が漏れています。実際のアプリ内にボタンを表示すると、この問題は発生しません。NSButtonコーナー半径とNSPopover

「NSAppearanceNameAqua」に設定したNSPopoverの外観で何かをしなければならないと感じています。

NSButtonsはNSST内にあり、NSTableViewに表示され、このスタイルに設定されています。

self.createdButton.wantsLayer = true 
    self.createdButton.layer?.backgroundColor = Utils.blackColor().CGColor 
    self.createdButton.layer?.masksToBounds = true 
    self.createdButton.layer?.cornerRadius = 5 

enter image description here enter image description here

実際のアプリケーションが開いているときに先頭の画像です。 下部の画像は、View ControllerがNSPopover内に表示されているときです。

+0

ベジェパスを使用して、角の丸みを作成だから、アプリケーションは、下部の画像で開いていない? – rocky

+0

トップメニューバーに表示されるNSStatusItemを作成しています。メニューバーからアイコンをクリックすると、NSPopoverが表示され、それらのボタンを含むView Controllerが表示されます。 – cmakthat

+0

私が見つけたことの1つは、contentViewControllerにボタンをプログラムで追加してから、それらを丸くして正しく丸めることです。しかし、Xib/StoryboardのInterface Builderからの同じボタン/ビューをリンクしても、少なくとも私が経験したものである正しい丸めは適用されません。おそらくAppKitのバグでしょうか? – zic10

答えて

0

あなたは「View ControllerがNSPopover内に示されている」対「は、実際のアプリが開いているときにトップ画像である」と言うとき、あなたは何を意味するのですか?つまり

NSBezierPath *path = [NSBezierPath bezierPathWithRoundedRect:view.bounds xRadius:3 yRadius:3]; 
    CAShapeLayer *maskLayer = [CAShapeLayer layer]; 
    maskLayer.frame = view.bounds; 
    maskLayer.path = path.toCGPath; 
    self.containerView.layer.mask = maskLayer; 
関連する問題