WKInterfaceImage-官方文档译文
类 WKInterfaceImage
能够在watchOS应用的界面中显示图片的控件.
声明
@interface WKInterfaceImage:WKInterfaceObject
概述
在watchOS应用中显示的图片可以是静态或者动态的.使用WKInterfaceImage对象来指定你要显示的图片数据,并控制图片的动画.
不要自己子类化或者创建该类的实例.你应该这样做,在创建的界面控制器的类中定义输出口,然后将之和故事板文件中的相应对象连接起来.比如,为了在界面中引用一个图片对象,你先在你的界面控制器中用以下语法定义一个属性:
@property (weak, nonatomic) IBOutlet WKInterfaceImage* myImage;
在你的界面控制器初始化的时候,WatchKit会创建所有需要的图片对象,然后将他们分配给他们关联的输出口.这个时候,你可以使用那些对象对界面上的图像进行更改.
你在界面上使用的图片可能是在手表应用的包内的,可能是动态创建的,或者是总网络上下载的.手表应用包内的图片,表示这些图片是你的应用的用户界面的一部分,和应用文件存放在一起.下载或者动态创建的图片,存放于内存中或者以文件的形式存放于WatckKit扩展的容器目录内.WKInterfaceImage类提供了好几种设置方法,来让你的图片显示到屏幕上,不管他们存放于什么位置.
图片管理
你在界面上使用的图片可能存放于不同的地方,那么你加载和管理这些图片就有不同的方法:
-
存储位于Watch应用包中,是标准界面的一部分的图片.使用资源目录来存储图片,并按照需要适配的设备提供不同的尺寸.使用
setImageNamed:
方法来展示位于资源目录或者Watch应用
包中的图片.可以在手表应用包中存储动画的图片序列,但是图片文件必须遵循指定的命名规则.这些规则的具体信息,请参考章节播放图片序列.
-
存储从网络下载下来的,位于应用扩展容器目录. 图片文件必须本地存储于应用扩展容器目录(WatchKit extension’s container directory)内,并且在运行时将图片数据加载到内存.如果要展示一个图片,而不需要额外进行修改,可以加载图片原始数据到NSData对象,然后用'setImageData:'方法来在界面上展示该图片.原始图像数据,一般都是经过压缩的,传输起来会比UIImage对象块.
-
直接设置动态创建的图片.如果使用编程方式绘制的图片内容,最终创建一个UIImage对象,并用
setImage:
方法来显示.也可以使用该技术来显示用animatedImageNamed:duration:
或者animatedImageWithImages:duration:
方法动态创建的动画的图片序列.
创建图像时,请始终以适合基础设备的大小创建图像。尽可能使用相同大小的图像,而不考虑底层设备。如果您需要不同设备大小的不同图像,请使用资产目录使用相同的图像名称存储不同版本的图像。如果指定的图像太大或太小,WatchKit将使用在Interface Builder中设置的mode属性来确定如何渲染图像。
支持的图片格式
你可以使用任何iOS支持的图片格式,但是还是建议尽可能的使用JPEG和PNG格式的图片.
使用JPEG或者PNG之外的图片,在渲染图片的时候可能会影响性能.所有图片应该是用于视网膜屏的,一个名为filename的图片,都应该有一个filename@2x的图片对应.
更多关于支持的图片格式的信息,请参考UIImage.
播放图片序列
使用动态图像,是让你界面更生动,更吸引用户的简单而有效的方法.你可以使用两种方式来显示动态图像:
- 资源目录中的图片;
- 根据你想要显示的图片序列创建的UIImage对象.
要根据根据资源目录中的图片来显示动态图像,你需要将照以下约定来命名图片资源:<name><number>,<name>是这一个图片序列中都一样的,<number>表示该图片在该序列中的序号.一个图片序列中的第一张图片的序号应该是0或者1.比如,一个动态图像包含3个图片,他们的名字可以是:image1,image2,image3.如果你没有把图片文件放在手表应用包的资源目录中,图片序列的命名规则是一样的,但是他们需要有同样的文件扩展名,比如:image1.jpg,image2.jpg,image3.jpg.
尽可能将图片资源放在手表应用包(不是手表应用扩展包)的资源目录中.把图片放在手表应用包中,你可以使用setImageNamed:
方法来在运行时加载动画图片,这样就简化了加载过程.对于动态生成的动画图片序列,使用UIImage的animatedImageWithImages:duration:
方法来将手表应用扩展中的动画图片整合到一起,然后用setImage:
方法来设置动画图片.
注意
你不能使用UIImage的animatedImageWithImages:duration:
方法来从手表应用包中创建动画图片.该方法在活动进程的包(WatchKit extension’s bundle)中查找图像。若要从Watch app bundle中的图像加载动画图像序列,必须正确地命名图像资源并使用此类的setImageNamed:
方法来显示。
要了解如何创建动画图像的更多信息,请参考UIImage中的animatedImageNamed:duration:
and animatedImageWithImages:duration:
方法.
Interface Builder配置选项
Xcode提供了在stroyboard文件中,配值WKInterfaceImage对象的方法.表1列举了可以配置的属性,以及这些属性所代表的意义.
Table 1 WKInterfaceImage可设置属性
属性名 | 描述 |
---|---|
Image | 要展示的图片的名称.该图片文件必须位于Watch app's bundle.如果不在故事版中设置图片,可以通过该类的一些方法在程序中设置. |
Mode | 图片内容显示模式.mode定义了图片如何填充整个用于显示的空间.一些模式可以让你缩放时保持或者不保持纵横比.其他的模式,让你可以相对于WKInterfaceImage对象的边界中的某些固定点对图片进行定位. |
Tint | 应用于模板图片的颜色.你可以在程序中使用setTintColor: 方法来改变tint color.该属性对于动画图片和非模板图片来说没有效果. |
Animate | 表明该图片是否可以动画的布尔值.设置YES来配置动画参数,包括持续时间(秒),是否在父界面控制器显示在屏幕上时,就立即开始动画.在加载时就开始的动画会不断循环播放. |
主题
配置图片
-
- setImage:
让WKInterfaceImage对象显示指定的图片对象. -
- setImageData:
让WKInterfaceImage对象显示格式化的图片数据对象.
-
- setImageNamed:
让WKInterfaceImage对象显示指定名称的图片资源文件. -
- setTintColor:
改变应用于模板图片的颜色.
关系
父类
WKInterfaceObject
协议
WKImageAnimatable
相关资料
图片和视频
-
WKImage
用于WKInterfacePicker的图片的封装 -
WKImageAnimatable
控制动画图片播放的方法的集合 -
WKInterfaceMovie
在手表应用中播放视频和音频内容的界面元素. -
WKInterfaceInlineMovie
显示视频的海报图片并且支持在线播放视频的界面元素.
-
WKInterfaceHMCamera
显示连接到HomeKit的IP照相机的视频流或者图片信息的界面元素. -
WKVideoGravity
指示视频内容显示效果的常量.