web-dev-qa-db-ja.com

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;を試しましたが、これを修正する方法を知っていますか?

40
pawelropa

CATextLayerの代わりにNSTextFieldを使用してしまいました。

0
pawelropa

秘密は、NSTextField...でこれらのプロパティの3つすべてを設定することです...

myTextField.bezeled         = NO;
myTextField.editable        = NO;
myTextField.drawsBackground = NO;
61
Alex Gray

属性インスペクターの下のテキストフィールドのインターフェイスビルダーウィンドウの.xibファイルにプロパティがあります

  1. ディスプレイ描画背景を確認します
  2. 背景色を選択します。透明な背景にクリアカラーを選択します。

enter image description here

16
Gamma-Point

10.12以降では、次のことができます。

let label = NSTextField(labelWithString: "HELLO")
5
Mark Bridges

これも探してここに来て、背景に透明な灰色を与えました。重要なのは、ベゼルがないことです。以下の私のコード:

NSTextField *yourLabel = [[NSTextField alloc] initWithFrame:NSMakeRect(0, 0, width , height * 1.0/3.0)];
yourLabel.editable = false;
yourLabel.bezeled = false;
[yourLabel setTextColor:[NSColor blackColor]];
[yourLabel setBackgroundColor:[NSColor colorWithRed:0.1 green:0.1 blue:0.1 alpha:0.1]];

完全にするために、レイアウトに何度も使用されるため、以前に幅と高さを取得していました。

height = self.window.frame.size.height;
width = self.window.frame.size.width;
0
Symanski