美文网首页
macOS开发之鼠标箭头样式

macOS开发之鼠标箭头样式

作者: chasitu | 来源:发表于2021-08-31 11:37 被阅读0次

    我们再开发macOS客户端的时候会有修改鼠标箭头样式的需求,我们今天就解决问题,就是这个类NSCursor,代码量比较少,直接上代码

    核心思路:给当前类添加鼠标监听,然后修改鼠标样式

    #import "SHButton.h"
    
    @interface SHButton ()
    @property (nonatomic , strong) NSTrackingArea *trackingArea;
    @end
    @implementation SHButton
    -(void)updateTrackingAreas{
        if (self.trackingAreas.count > 0) {
            [self removeTrackingArea:_trackingArea];
        }
        NSTrackingAreaOptions options = NSTrackingMouseEnteredAndExited|NSTrackingActiveInKeyWindow;
        _trackingArea = [[NSTrackingArea alloc] initWithRect:self.bounds
                                                                    options:options
                                                                      owner:self
                                                                   userInfo:nil];
        [self addTrackingArea:_trackingArea];
    }
    
    -(void)mouseEntered:(NSEvent *)theEvent{
        [[NSCursor pointingHandCursor] set];
    }
    
    -(void)mouseExited:(NSEvent *)theEvent{
        [[NSCursor arrowCursor] set];
    }
    @end
    
    • updateTrackingAreas这个方法类似于我们iOS的layoutSubviews调用频繁,所以需要清除之前的监听
    • 下面的两个回调方法就不多解释了,是鼠标监听回调
    • [[NSCursor pointingHandCursor] set]这里是修改鼠标样式的代码
    • 鼠标的其它样式如下:
    @property (class, readonly, strong) NSCursor *arrowCursor;
    @property (class, readonly, strong) NSCursor *IBeamCursor;
    @property (class, readonly, strong) NSCursor *pointingHandCursor;
    @property (class, readonly, strong) NSCursor *closedHandCursor;
    @property (class, readonly, strong) NSCursor *openHandCursor;
    @property (class, readonly, strong) NSCursor *resizeLeftCursor;
    @property (class, readonly, strong) NSCursor *resizeRightCursor;
    @property (class, readonly, strong) NSCursor *resizeLeftRightCursor;
    @property (class, readonly, strong) NSCursor *resizeUpCursor;
    @property (class, readonly, strong) NSCursor *resizeDownCursor;
    @property (class, readonly, strong) NSCursor *resizeUpDownCursor;
    @property (class, readonly, strong) NSCursor *crosshairCursor;
    @property (class, readonly, strong) NSCursor *disappearingItemCursor;
    @property (class, readonly, strong) NSCursor *operationNotAllowedCursor API_AVAILABLE(macos(10.5));
    @property (class, readonly, strong) NSCursor *dragLinkCursor API_AVAILABLE(macos(10.6));
    @property (class, readonly, strong) NSCursor *dragCopyCursor API_AVAILABLE(macos(10.6));
    @property (class, readonly, strong) NSCursor *contextualMenuCursor API_AVAILABLE(macos(10.6));
    @property (class, readonly, strong) NSCursor *IBeamCursorForVerticalLayout API_AVAILABLE(macos(10.7));
    

    NSCursor这个类还有其它的一些方法,这里就不罗列了,有感兴趣的小伙伴可以自行查阅

    相关文章

      网友评论

          本文标题:macOS开发之鼠标箭头样式

          本文链接:https://www.haomeiwen.com/subject/yjcziltx.html