我希望在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];
参见this similar question;