Assets.xcassets
有什么区别1(守望套件应用
2(戴头套扩展
我不确定我应该将图像放入哪个文件夹。
我需要访问位于WatchKit App
文件夹和WatchKit Extension
中的Interface.storyboard
中的图像(例如testimage.png(。在控制器中,我将使用以下方式设置它:
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的保留,当iPhone实际上运行了iPhone并将信息和资源发送到在手表上运行的钢琴应用程序时。
有一些调用只能与watchkit应用程序的资产一起使用。xcassets文件夹,例如 setImageNamed:
或 setBackgroundImageNamed:
有几种方法可以更改接口对象的当前图像:
使用setimagenamed:或setbackgroundimagenamed:分配已经在手表应用程序捆绑中的图像的方法。
使用setimage:,setimagedata:,setbackgroundImage:,,或setbackgroundMimimimageData:>方法将图像数据从您的守望套件扩展传输到您的手表应用程序。
按名称指定图像更有效,因为仅必须将名称字符串传输到您的手表应用程序。WatchOS搜索您的手表应用程序捆绑包,以获取带有您指定的名称的图像文件。有效指定图像的最有效方法是将它们存储在您的手表应用程序捆绑包中,并使用setimageNamed:或setbackgroundimagenamed:适当配置相应的对象。
在您的守望套件扩展程序中创建的图像必须在使用之前将其传输到手表应用程序。例如,使用Imagenamed:扩展中的方法加载了WatchKit扩展程序捆绑包的图像,而不是从Watch App的捆绑包中加载图像。然后,您可以调用setimage:方法,传递图像对象。戴管子扩展名将图像自动将图像传输到手表应用程序以进行显示。与直接从Watch App Bundle加载图像相比,这还具有一些额外的间接费用,但它不应对性能或电池寿命产生重大影响。
手表/图像的应用程序编程指南
我个人不会将图像放在两个文件夹中,因为这会增加您的应用程序的大小。我倾向于在WatchKit应用程序的文件夹中放置故事板将设置的图像,以及将在扩展程序中编程更改的所有图像。