其他分享
首页 > 其他分享> > macos开发 自定义searchField

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