2012-06-20 15 views
34

創建透明NSTextField的NSTextField透明背景

self.myTextField = [[NSTextField alloc] initWithFrame:CGRectMake(backgroundView.frame.origin.x + backgroundView.frame.size.width + 20, self.projectTitle.frame.origin.y - 30.0, 100, 20)]; 
self.myTextField.editable = NO; 
self.myTextField.bezeled = NO; 
self.myTextField.drawsBackground = YES; 
self.myTextField.backgroundColor = [NSColor clearColor]; 
self.myTextField.selectable = NO; 
self.myTextField.font = [NSFont fontWithName:@"Helvetica Neue" size:16]; 

    [self addSubview:self.compressingTime]; 

而作爲一個結果的文字看起來很糟糕。 enter image description here 如果我設置背景色

self.myTextField.backgroundColor = [NSColor colorWithCalibratedRed:0.85 green:0.85 blue:0.85 alpha:1.0]; 

一切正常enter image description here 我也有試過drawsBackground = NO;難道你們知道如何解決這個問題?

+0

你的意思是 「看不好」?我看起來很好嗎? – Vervious

+0

@Vervious在第二個img上,看起來抗鋸齒功能已開啓,firts img上的字體非常粗糙。 – pawelropa

+0

哦,我現在明白了。 – Vervious

回答

-2

我結束了使用CATextLayer而不是NSTextField

-2

清晰的顏色將使當前視圖(即)NSTextView的背景爲透明,因此保存NSTextView的NSView的顏色是可見的。

+0

對不起,不是這樣。 – pawelropa

53

的祕密是在NSTextField設置這些屬性的全部三個......

myTextField.bezeled   = NO; 
myTextField.editable  = NO; 
myTextField.drawsBackground = NO; 
+2

仍然不適合我。 –

+0

謝謝,完美的修改Apple代碼,以編程方式填充NSTableView –

+0

,這隻有在超級視圖的圖層具有純色背景時纔有效。 @ZsoltSzatmari – mrabin

-1

您不必切換到CATextLayer有效地告訴你的應用程序中使用圖層文本字段。你可以用這個代替:

textField.drawsBackground = NO; 
textField.wantsLayer  = YES; 
-2

我剛纔有這個問題。我通過修復了從NSTextField的超級視圖中刪除名爲backgroundColor的屬性。

我正在使用backgroundColor就像一個NSView子類上CALayer屬性的方便getter/setter一樣。雖然這個屬性沒有記錄在NSView上,但它看起來像我不小心重寫了NSView上的一個屬性。

Yay for subclassing!

6

有一個在的.xib文件的屬性,文本字段的界面生成器窗口,在屬性檢查器

  1. 檢查顯示繪製背景
  2. 選擇背景顏色。爲透明背景選擇清除顏色。

enter image description here

+0

通過勾選背景並將背景顏色設置爲清除顏色來解決我的問題 –

2

截至10.12,你可以這樣做:

let label = NSTextField(labelWithString: "HELLO")