2017-01-10 11 views
1

enter image description here NSButton Titleの可視性に打撃を受けました。私がしたのは、CALayerを使って、そのレイヤーの背景色、コーナー半径、境界線の幅を調整しました。最後に、このレイヤーはNSButtonレイヤーに設定されますが、この後、NSButtonのタイトルは表示されません。何か考えてみてください。前もって感謝します。NSButtonのタイトルはCALayerがXamarin.MacのNSButtonレイヤーに設定されているときは表示されません

ここで私のコード、私は何を試した。

var wordButton = new NSButton(new CGRect(20, 0, tableColumn.Width - 70, 30)); 

CALayer layer = new CALayer(); 

layer.CornerRadius = 5f; 

layer.BorderWidth = 1f; 

layer.BackgroundColor = NSColor.FromRgba(0.70f, 0.87f, 0.86f, 1.0f).CGColor; 

wordButton.WantsLayer = true; 

wordButton.Layer = layer; 

wordButton.Title = "Test"; 

wordButton.SetButtonType(NSButtonType.MomentaryPushIn); 

wordButton.BezelStyle = NSBezelStyle.SmallSquare; 
+0

これはXamarinのバグではないことを確認するために、これをSwiftに変換できました。 – BytesGuy

答えて

1

既存の層カスタマイズ:

wordButton.WantsLayer = true; 

//wordButton.Layer = layer; 
wordButton.Layer.CornerRadius = 5f; 
wordButton.Layer.BorderWidth = 1f; 
wordButton.Layer.BackgroundColor = NSColor.FromRgba (0.70f, 0.87f, 0.86f, 1.0f).CGColor; 

しかし、これはされますが、デフォルトボタンのUIの背後にあるあなたの背景を。

NSButtonはこの方法でカスタマイズするようには設計されていません。 カスタムバックグラウンドが必要な場合は、NSButtonオーバーライドのサブクラスを作成し、ラベルを直接描画する必要があります

+0

この回答は正しいです。レイヤー描画を追加すると、多くのCocoaコントロールが望みどおりに反応せず、重労働を起こすことがあります。 –

関連する問題