2013-08-30 55 views
0

我設法將NSTextFieldCell繼承到NSTextField上的圓角。我想爲NSSecureTexField執行相同的操作,但對NSSecureTextFieldCell進行子類化不會產生任何影響。OSX中NSSecureTextFieldCell上的圓角

- (void)drawWithFrame:(NSRect)cellFrame inView:(NSView *)controlView { .. }永遠不會被調用。

有沒有人能夠給NSSecureTextField的圓角?如果是這樣,完成這件事的最佳方法是什麼?

任何幫助表示讚賞..

回答

1

解決了這個問題。在任何情況下,是尋找一個解決方案.. 這裏是向我指出了正確的答案。與代碼段沿鏈路。

因此,作爲中提到的訣竅是..添加在IB一個普通文本字段..但設置其小區是子類的CustomNSSecureTextFieldCell

Vertically Centre Text in NSSecureTextField with subclassing

@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