Assets.xcassets
和
1)WatchKit应用
2)WatchKit扩展
我不确定应该将图像放置在哪个文件夹中。
我需要访问Interface.storyboard
文件夹中的WatchKit App
和WatchKit Extension
中的图像(例如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
哪种方法更好?还是有更好的方法?
答案 0 :(得分:1)
当WatchKit Extension实际上在iPhone上运行并将信息和资源发送到手表上运行的WatchKit App时,这似乎是watchOS 1的一个保留。
有些呼叫仅适用于WatchKit App的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应用程序包中加载图像相比,这会产生一些额外的开销,但对性能或电池寿命都不会产生重大影响。
App Programming Guide for watchOS / Images
我个人不会将图像放置在两个文件夹中,因为这会增加应用程序的大小。我倾向于将将由Storyboard设置的图像放置在WatchKit App的文件夹中,并将所有将以编程方式更改的图像放置在扩展程序中。