NSTextFieldCell 仅在非第一响应者时绘制白色背景
NSTextFieldCell draws white background only when not the first responder
我在故事板中有两个 NSTextField
,除了我已将它们的 类 更改为子类之外,它们都保持默认配置不变。我还对内部 NSTextFieldCell
进行了子类化。我已经根据需要自定义了每个 - 非常简单的 sub类。作为第一响应者的文本字段按预期出现,但另一个文本字段没有。它正在为其单元格绘制白色背景。在两个字段之间切换会切换背景。如何从单元格中删除这个白色背景?
LoginTextField
:
- (void)baseInit {
self.drawsBackground = NO;
self.wantsLayer = YES;
self.backgroundColor = [[NSColor whiteColor] colorWithAlphaComponent:0.75];
self.textColor = [NSColor blackColor];
CALayer *layer = [[CALayer alloc] init];
layer.backgroundColor = self.backgroundColor.CGColor;
layer.borderWidth = 0;
layer.cornerRadius = 6;
self.layer = layer;
}
LoginTextFieldCell
:
- (void)baseInit {
self.drawsBackground = NO;
self.focusRingType = NSFocusRingTypeNone;
}
如果我覆盖此函数,白色背景会消失,但当不是第一响应者时,占位符和文本标签也会消失。
- (void)drawInteriorWithFrame:(NSRect)cellFrame inView:(NSView *)controlView {
return [super drawInteriorWithFrame:cellFrame inView:controlView];
}
我正在 Xcode 7,运行 OS X El Capitan 上开发应用程序。
对于同样看到此问题的任何人,对我有用的解决方案是将 bordered
设置为 NO
并配置 self.layer
而不是创建新的 CALayer
.
LoginTextField
:
- (void)baseInit {
self.drawsBackground = NO;
self.wantsLayer = YES;
self.textColor = [NSColor blackColor];
self.bordered = NO;
self.layer.backgroundColor = [[NSColor whiteColor] colorWithAlphaComponent:0.75].CGColor;
self.layer.borderWidth = 0;
self.layer.cornerRadius = 6;
}
我在故事板中有两个 NSTextField
,除了我已将它们的 类 更改为子类之外,它们都保持默认配置不变。我还对内部 NSTextFieldCell
进行了子类化。我已经根据需要自定义了每个 - 非常简单的 sub类。作为第一响应者的文本字段按预期出现,但另一个文本字段没有。它正在为其单元格绘制白色背景。在两个字段之间切换会切换背景。如何从单元格中删除这个白色背景?
LoginTextField
:
- (void)baseInit {
self.drawsBackground = NO;
self.wantsLayer = YES;
self.backgroundColor = [[NSColor whiteColor] colorWithAlphaComponent:0.75];
self.textColor = [NSColor blackColor];
CALayer *layer = [[CALayer alloc] init];
layer.backgroundColor = self.backgroundColor.CGColor;
layer.borderWidth = 0;
layer.cornerRadius = 6;
self.layer = layer;
}
LoginTextFieldCell
:
- (void)baseInit {
self.drawsBackground = NO;
self.focusRingType = NSFocusRingTypeNone;
}
如果我覆盖此函数,白色背景会消失,但当不是第一响应者时,占位符和文本标签也会消失。
- (void)drawInteriorWithFrame:(NSRect)cellFrame inView:(NSView *)controlView {
return [super drawInteriorWithFrame:cellFrame inView:controlView];
}
我正在 Xcode 7,运行 OS X El Capitan 上开发应用程序。
对于同样看到此问题的任何人,对我有用的解决方案是将 bordered
设置为 NO
并配置 self.layer
而不是创建新的 CALayer
.
LoginTextField
:
- (void)baseInit {
self.drawsBackground = NO;
self.wantsLayer = YES;
self.textColor = [NSColor blackColor];
self.bordered = NO;
self.layer.backgroundColor = [[NSColor whiteColor] colorWithAlphaComponent:0.75].CGColor;
self.layer.borderWidth = 0;
self.layer.cornerRadius = 6;
}