0

我已经设法将 NSTextFieldCell 子类化以在 NSTextField 上获得圆角。我想对 NSSecureTexField 做同样的事情,但是子类化 NSSecureTextFieldCell 没有效果。

- (void)drawWithFrame:(NSRect)cellFrame inView:(NSView *)controlView { .. }永远不会被调用。

有没有人能够为 NSSecureTextField 提供更圆的角?如果是这样,完成这项工作的最佳方法是什么?

任何帮助表示赞赏..

4

1 回答 1

1

解决了..如果有人正在寻找解决方案..这是指向正确答案的链接..以及代码片段。

所以提到的技巧是..在IB中添加一个常规文本字段..但将其单元格设置为CustomNSSecureTextFieldCell

在具有子类化的 NSSecureTextField 中垂直居中文本

@interface CustomNSSecureTextFieldCell : NSSecureTextFieldCell

@end


@implementation CustomNSSecureTextFieldCell

- (void)drawWithFrame:(NSRect)cellFrame inView:(NSView *)controlView {

    NSBezierPath *betterBounds = [NSBezierPath bezierPathWithRoundedRect:cellFrame xRadius:CORNER_RADIUS yRadius:CORNER_RADIUS];
    [betterBounds addClip];
    [super drawWithFrame:cellFrame inView:controlView];
    if (self.isBezeled) {
        [betterBounds setLineWidth:2];
        [[NSColor colorWithCalibratedRed:0.510 green:0.643 blue:0.804 alpha:1] setStroke];
        [betterBounds stroke];
    }
}
@end
于 2013-08-30T12:27:43.287 回答