MacOS在NSImage里提供了哪些系统图标
近两周闲下来的时间都在写一个新的App,都没时间写字和写文章。昨天美工大哥问了我一个问题,MacOS到底有哪些系统图标可用?图标文件夹的确是一个解决方案,但保证可用还是得额外加进项目的素材库,和外加的图标没有区别。真的内置的图标的话,这个问题换句话说是NSImage.Name里面到底有哪些图标。本文用看着也越来越重要的SwiftUI,抓取开发者文档的数据展示可用的图标和尺寸。
已有资料
开发者文档里有专门的一页,列出了目前可用的系统图标。但只有名字,没有相应的图片放在边上,也看不到尺寸。
github上发现了一个项目,可惜几年不更新了,图标数据也是写死在代码里的。项目名字叫fucking_nsimage_syntax,不知道是不是也在吐槽开发者文档里不放图和尺寸。
如果自己写一个的话,基本是,网页抓取数据->数据对应图标和尺寸->SwiftUI展示,也很简单。
数据抓取
开发者文档载入是先框架后数据,简单看一下包,可以找到图标页的数据通过获取这一个网址取得:
1 | https://developer.apple.com/tutorials/data/documentation/appkit/nsimage/name.json |
既然已经想好SwiftUI展示,那就直接做进界面的方法里好了,这里就是一个简单的网页请求:
1 | extension ImageNameDemoView { |
我们要的数据全都在references键里,通过判断后缀是否有Name去除非图标的内容。
数据对应图标和尺寸
这里获取了需要的数据的数组,但这个数据只是属性名不是实际的值,所以还需要一个转化。
理论上来说这是个很简单的过程,想象中通过value(forKey:)就可以解决。但NSImage现在还不是正常实现的类,所以这个方法和同理的反射都不能用。
这里是可以OC去取值的,但实际上取巧的办法就可行:
1 | extension ImageNameDemoView { |