Me gustaría que los NSTextFields que configuré en Interface Builder tengan sombras. Implementé una forma de hacer esto que parece funcionar, pero no estoy seguro de si es la correcta.NSTextField con sombra?
Lo que hice fue la subclase NSTextFieldCell de la siguiente manera y luego establecí mi subclase como el tipo de celda de NSTextField en IB. ¿Hay algún problema con este enfoque? ¿Hay una mejor manera?
#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
Así es exactamente como se supone que debes hacerlo. La forma más elegante es poner su clase de campo de sombra en su propio paquete con un complemento de IB, y luego IB puede renderizar la sombra durante el diseño; pero eso es demasiado exagerado y los complementos de IB son (¿temporalmente?) MIA en xcode 4 de todos modos. – rgeorge