【发布时间】:2011-04-16 18:55:27
【问题描述】:
我希望我在 Interface Builder 中设置的 NSTextFields 有阴影。我已经实现了一种似乎可行的方法,但我不确定它是否正确。
我所做的是子类 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
【问题讨论】:
-
这正是你应该做的。更好的方法是使用 IB 插件将你的 shadow-field 类放在它自己的包中,然后 IB 可以在布局期间实际为你渲染阴影;但这有点矫枉过正,而且 IB 插件(暂时?)无论如何都是 xcode 4 中的 MIA。
标签: cocoa nstextfield nstextfieldcell