ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

macos开发 自定义searchField

2019-01-24 11:47:14  阅读:537  来源: 互联网

标签:macos return 自定义 NSRect self searchField height super rect


应公司需求,自定义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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有