NSTextField有阴影吗?

| 我希望在Interface Builder中设置的NSTextField具有阴影。我已经实现了一种似乎可行的方法,但是我不确定这是否正确。 我所做的是如下创建NSTextFieldCell子类,然后在IB中将我的子类设置为NSTextField的单元格类型。这种方法有问题吗?有没有更好的办法?
#import \"ShadowTextFieldCell.h\"

static NSShadow *kShadow = nil;

@implementation ShadowTextFieldCell

+ (void)initialize
{
    kShadow = [[NSShadow alloc] init];
    [kShadow setShadowColor:[NSColor colorWithCalibratedWhite:0.f alpha:0.08f]];
    [kShadow setShadowBlurRadius:0.f];
    [kShadow setShadowOffset:NSMakeSize(0.f, -2.f)];
}

- (void)drawInteriorWithFrame:(NSRect)cellFrame inView:(NSView *)controlView
{
    [kShadow set];
    [super drawInteriorWithFrame:cellFrame inView:controlView];
}

@end
    
已邀请:
除了子类,您还可以使用NSCell的
setBackgroundStyle:
[[aTextField cell] setBackgroundStyle:NSBackgroundStyleRaised];
看到类似的问题;     
这种方法没有错。另一个选择是对文本字段进行分层(调用
[textField setWantsLayer:YES]
并使用CALayer的阴影属性),但这通常是不希望这样做的方法,因为Core Animation的文本渲染缺少亚像素抗锯齿功能。     
最简单的方法是
[[yourTextField cell] setBackgroundStyle:NSBackgroundStyleRaised]; 
就像zpasternack所说的,但这仅用于默认阴影处理,自定义一个子类或使用图层。     

要回复问题请先登录注册