NSTextField透明背景

paw*_*opa 38 macos cocoa 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];
Run Code Online (Sandbox Code Playgroud)

结果文字看起来很糟糕. 在此输入图像描述 如果我设置背景颜色

    self.myTextField.backgroundColor = [NSColor colorWithCalibratedRed:0.85 green:0.85 blue:0.85 alpha:1.0];
Run Code Online (Sandbox Code Playgroud)

一切看起来都不错在此输入图像描述 我也尝试过drawsBackground = NO;你们知道如何解决这个问题吗?

Ale*_*ray 61

秘诀是在NSTextField...... 上设置所有这三个属性...

myTextField.bezeled         = NO;
myTextField.editable        = NO;
myTextField.drawsBackground = NO;
Run Code Online (Sandbox Code Playgroud)

  • 在我的 Xcode9 和 OSX 10.13.2 中,`myTextField.bezeled` 应该是 `myTextField.isBezeled`。而`myTextField.editable` 应该是`myTextField.isEditable`。 (3认同)
  • 这仅在超级视图的图层具有纯色背景时才有效。@ZsoltSzatmari (2认同)
  • 这是最好的答案。在代码中创建 NSTextView 时,您必须将 .isBezeled 设置为 false ,否则由于边框层,您的视图将不透明。谢谢亚历克斯! (2认同)
  • 啊AppKit的乐趣,总是最直观的解决方案 (2认同)

Gam*_*int 13

.xib文件中的属性位于属性检查器下的文本字段的界面构建器窗口中

  1. 检查显示绘制背景
  2. 选择背景颜色.为透明背景选择清晰的颜色.

在此输入图像描述


Mar*_*ges 7

从 10.12 开始,您可以执行以下操作:

let label = NSTextField(labelWithString: "HELLO")
Run Code Online (Sandbox Code Playgroud)


paw*_*opa 1

CATextLayer我最终使用了NSTextField.