macos开发 自定义searchField
作者:互联网
应公司需求,自定义NSSearchField
@interface MKSearchField : NSSearchField
@end
#import "MKSearchField.h"
@interface MKSearchFieldCell : NSSearchFieldCell
@end
@implementation MKSearchFieldCell
- (instancetype)init
{
self = [super init];
if (self) {
//重写搜索图标
NSButtonCell *searchButtonCell = [self searchButtonCell];
NSImage *searchImage = [NSImage imageNamed:@"search1"];
[searchButtonCell setImage:searchImage];
[searchButtonCell setAlternateImage:searchImage];
self.cancelButtonCell = nil;
}
return self;
}
- (NSRect)searchButtonRectForBounds:(NSRect)rect {
NSRect buttonRect = NSMakeRect(NSWidth(rect) - 15 - 10, (NSHeight(rect) - 15)/2, 15, 15);
return buttonRect;
}
- (NSRect)searchTextRectForBounds:(NSRect)rect {
CGFloat height = self.font.boundingRectForFont.size.height;
NSRect buttonRect = NSMakeRect(10, (self.cellSize.height - height)/2, 100, height);
return buttonRect;
}
- (void)drawInteriorWithFrame:(NSRect)cellFrame inView:(NSView *)controlView
{
NSRect rect = controlView.bounds;
NSBezierPath *bezierPath = [NSBezierPath bezierPathWithRoundedRect:rect
xRadius:3
yRadius:3];
[[NSColor colorWithHexString:@"F2F2F2"] set];
[bezierPath fill];
[super drawInteriorWithFrame:cellFrame inView:controlView];
}
@end
@interface MKSearchField ()<NSSearchFieldDelegate>
@property (nonatomic, strong) MKButton *deleteBtn;
@end
@implementation MKSearchField
- (void)drawRect:(NSRect)dirtyRect {
[super drawRect:dirtyRect];
// Drawing code here.
}
- (instancetype)init
{
self = [super init];
if (self) {
self.delegate = self;
self.centersPlaceholder = NO;
[[self cell] setLineBreakMode:NSLineBreakByTruncatingTail];
[self setWantsLayer:YES];
self.layer.backgroundColor = [NSColor colorWithHexString:@"F2F2F2"].CGColor;
self.layer.cornerRadius = 3.0f;
}
return self;
}
+ (Class)cellClass {
return [MKSearchFieldCell class];
}
+ (void)setCellClass:(Class)cellClass {
[super setCellClass:[MKSearchFieldCell class]];
}
标签:macos,return,自定义,NSRect,self,searchField,height,super,rect 来源: https://blog.csdn.net/lqz001556/article/details/86623779