ios - Apple watch 多个 Assets.xcassets 文件夹的用途
问题描述
Assets.xcassets
in 和in有什么区别
1) WatchKit 应用
2) WatchKit 扩展
我不确定我应该将图像放在哪个文件夹中。
我需要访问Interface.storyboard
位于WatchKit App
文件夹和WatchKit Extension
. 在控制器中我设置它使用:
let menuIcon: UIImage? = UIImage(named: menu.iconName)
我试过了:
选项1:
1)将图像放置在两者WatchKit App
中WatchKit Extension
这将意味着重复的图像,在两个Assets.xcassets
文件夹中。
选项 2:
1)仅将图像放置在两者中WatchKit App
并更改目标成员资格Assets.xcassets
以支持两者WatchKit App
和WatchKit Extension
哪种方法更好?还是有更好的方法?
解决方案
这似乎是 watchOS 1 的保留,当时 WatchKit 扩展实际上在 iPhone 上运行,并向手表上运行的 WatchKit 应用程序发送信息和资源。
有些调用仅适用于 WatchKit 应用程序的 Assets.xcassets 文件夹,例如setImageNamed:
或setBackgroundImageNamed:
有几种方法可以更改界面对象的当前图像:
使用 setImageNamed: 或 setBackgroundImageNamed: 方法分配已经在 Watch 应用程序包中的图像。
使用 setImage:、setImageData:、setBackgroundImage: 或 setBackgroundImageData: >方法将图像数据从 WatchKit 扩展传输到 Watch 应用程序。
按名称指定图像更有效,因为只需将名称字符串传输到您的 Watch 应用程序。watchOS 在您的 Watch 应用程序包中搜索具有您指定名称的图像文件。有效指定图像的最有效方法是将它们存储在 Watch 应用程序包中,并根据需要使用 setImageNamed: 或 setBackgroundImageNamed: 来配置相应的对象。
在 WatchKit 扩展中创建的图像必须先传输到 Watch 应用程序才能使用。例如,在您的扩展程序中使用 imageNamed: 方法从 WatchKit 扩展程序的包中加载图像,而不是从 Watch 应用程序的包中加载图像。然后您可以调用 setImage: 方法,传入图像对象。WatchKit 扩展自动将图像传输到 Watch 应用程序进行显示。虽然这与直接从 Watch 应用程序包加载图像相比有一些额外的开销,但它不应该对性能或电池寿命产生重大影响。
就个人而言,我不会将图像放在两个文件夹中,因为这会增加您的应用程序的大小。我倾向于将 Storyboard 设置的图像放在 WatchKit 应用程序的文件夹中,而所有将以编程方式更改的图像都放在 Extension 中。
推荐阅读
- r - 在闪亮的应用程序中单击网络节点后更新数据表
- python - XSS 保护 jsonify 输出的最佳方法
- html - 在 Blender 中创建了一个没有骨骼的关键帧动画,但我不知道如何在 Three.js 中使用它。(我知道处理骨骼)
- javascript - 如何从angularjs中的组件标签访问组件模板中的对象或变量
- asp.net - 获取给定 Controller 和 Action 的路由模板
- react-native - 反应原生地图删除标记
- php - 在使用 cURL 使用 HTTP POST 将文件上传到 RESTful Web API 时指定目标数据库主体
- python - 如何在 Tensorflow 对象检测 API 中只计算“人”框
- windows - 检查应用程序是否具有对文件夹的读取权限(FindFirstFile 返回“访问被拒绝”但 _access 成功)
- java - 将实体从一个 Ignite 缓存复制到另一个的最快方法是什么?