Mac开发如果觉得系统自带Slider不好看,可以通过重绘让自己软件的Slider变得好看一点。与iOS开发不同的是,Mac开发控件重绘没有那么直接,但也不算复杂。下面说一下怎么通过继承NSSlider和NSSliderCell重绘NSSlider。
新建一个Project,名字为:CustomSlider。打开Main.storyboard,从IB中拉几个slider,如图一所示:
图一
新建几个类,分别是CustomSlider、CustomSliderCell和NSColor+Hexa,下面是这几个类的详细内容:
CustomSlider.h
//
// CustomSlider.h
// X300A
//
// Created by Chen Ling on 15/3/2018.
// Copyright © 2018 Chen Ling. All rights reserved.
//
#import <Cocoa/Cocoa.h>
@interface CustomSlider : NSSlider
@end
CustomSlider.m
//
// CustomSlider.m
// CustomSlider
//
// Created by Chen Ling on 15/3/2018.
// Copyright © 2018 Chen Ling. All rights reserved.
//
#import "CustomSlider.h"
@interface CustomSlider()
@property (nonatomic, strong) NSTrackingArea *trackingArea;
@end
@implementation CustomSlider
- (instancetype)initWithCoder:(NSCoder *)coder {
if (self = [super initWithCoder:coder]) {
// init code here
}
return self;
}
#pragma mark - 设置mouse追踪区域
-(void)updateTrackingAreas
{
[super updateTrackingAreas];
if(_trackingArea != nil) {
[self removeTrackingArea:_trackingArea];
}
int opts = (NSTrackingMouseEnteredAndExited | NSTrackingActiveAlways);
// 将设置追踪区域为控件大小
// 设置鼠标追踪区域,如果不设置追踪区域,mouseEntered和mouseExited会无效
_trackingArea = [ [NSTrackingArea alloc] initWithRect:[self bounds]