47

我创造透明 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];

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

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

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

4

8 回答 8

78

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

myTextField.bezeled         = NO;
myTextField.editable        = NO;
myTextField.drawsBackground = NO;
于 2013-09-04T17:46:37.900 回答
18

.xib 文件中有一个属性,在文本字段的界面构建器窗口中,在属性检查器下

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

在此处输入图像描述

于 2015-10-02T21:33:38.100 回答
7

从 10.12 开始,您可以这样做:

let label = NSTextField(labelWithString: "HELLO")
于 2017-08-01T08:38:06.360 回答
1

也来这里找这个,并且有背景给我一个透明的灰色。关键是没有挡板。我的代码如下:

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;
于 2019-01-18T09:23:56.650 回答
0

我最终CATextLayer改用NSTextField.

于 2012-08-30T06:15:06.180 回答
0

我有同样的问题。默认外观为空。我尝试设置暗模式,它可以工作。

self.nameTextField.appearance = [NSAppearance appearanceNamed:NSAppearanceNameVibrantDark];
于 2020-10-26T05:05:18.483 回答
-2

我刚才有这个问题。我通过从 NSTextField 的超级视图中删除一个名为的属性backgroundColor来修复它。

backgroundColor只是将 NSView 子类上的 CALayer 属性用作方便的 getter/setter。虽然 NSView 上没有记录这个属性,但看起来我不小心覆盖了 NSView 上的一个属性。

是的,子类化!

于 2015-07-23T09:31:59.553 回答
-4

清晰的颜色将使当前视图(即)NSTextView 的背景透明,因此保存 NSTextView 的 NSView 的颜色是可见的。

于 2012-08-29T11:41:13.417 回答