美文网首页
macOS开发之NSImage调用系统图标

macOS开发之NSImage调用系统图标

作者: chasitu | 来源:发表于2021-04-12 18:34 被阅读0次

今天我们学习一个既熟悉又陌生的控件NSImage,这个控件我们在iOS开发中使用的频率也很高,再熟悉不过了,常用的就是获取图片,然后供其它控件展示,但是在macOS开发中有很大作用,就是它内部提供了很多系统图标,无论在多大的控件内展示都不失真,显然这些系统图标不是图片,是画出来的,我粗略的统计了一下macOS11以前大概有200多个,macOS11以后的呢就太多了,我也没有去数

  1. 首先我们先了解一下常用的一些初始化方法
+ (nullable NSImage *)imageNamed:(NSImageName)name;
- (nullable instancetype)initWithData:(NSData *)data;           /* When archived, saves contents */
- (nullable instancetype)initWithContentsOfFile:(NSString *)fileName;   /* When archived, saves contents */
- (nullable instancetype)initWithContentsOfURL:(NSURL *)url;               /* When archived, saves contents */
- (nullable instancetype)initByReferencingFile:(NSString *)fileName;    /* When archived, saves fileName */
- (instancetype)initByReferencingURL:(NSURL *)url;      /* When archived, saves url, supports progressive loading */
- (nullable instancetype)initWithPasteboard:(NSPasteboard *)pasteboard;
- (nullable instancetype)initWithDataIgnoringOrientation:(NSData *)data API_AVAILABLE(macos(10.6));
+ (instancetype)imageWithSize:(NSSize)size flipped:(BOOL)drawingHandlerShouldBeCalledWithFlippedContext drawingHandler:(BOOL (^)(NSRect dstRect))drawingHandler API_AVAILABLE(macos(10.8));

还没有认真了解的小伙伴们可以大概看看了解一下,除了这些还有很多属性和方法,多说跟图片缓存有关,我的项目也没有过多的涉及

  1. 下面是今天的重点,使用系统提供的图标

图标数量庞大首先我们要找到需要的图标,操作如下:

  1. 按照上图在Main.storyboard中拖一个能加载图片的控件,我这里拖了一个NSButton
  2. 选择属性栏,下面找到Image选择框,打开之后左边是图标,右边是名称(名称分两种)
    • NS开头的是macOS11以前的图标,其它的是macOS11以后提供的图标,调用方法也不同,后面解释
  3. 选中之后输入框中显示图片名称

一,macOS11以前提供的图标调用方式(红色框内的)

把上面选中框的名称复制之后用下面的方法调用

[NSImage imageNamed:NSImageNameUser]

  • 显示的名称是:NS+User
  • 调用的时候是:NS+ImageName+User

二,macOS11以后又新增的图标(绿色框内的)方法如下

+ (nullable instancetype)imageWithSystemSymbolName:(NSString *)symbolName accessibilityDescription:(nullable NSString *)description

  • symbolName:就是上面的图片名称
  • description :这个参数可以为空,nil就可以
    注:只要不是NS开头的图标就用下面的方法读取,如果使用上面的方法会崩溃

完工,小伙伴们有什么疑问可以在留言区留言给我

相关文章

网友评论

      本文标题:macOS开发之NSImage调用系统图标

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