您的位置:首页 > 产品设计 > UI/UE

UIVIew进阶-常用控件(三):UIImageView

2014-07-22 16:01 288 查看
imageView提供了一个显示单个或者动态显示多个图片对象的容器。对于动画图像,UIImageView提供了周期和频率的控制。当imageView对象显示单个图像时,其实际行为是基于image属性和视图。如果图像的leftCapWitdth(水平end-cap大小)和topCapHeight(垂直end-cap大小)非0,则图像会根据这些属性进行延伸。否则,图像根据视图的contentMode属性进行大小、比例和位置的适应调整。推荐使用相同大小的图片,如果大小不同,每一个都会分别的适应contentMode模式。

基础

提升image view的性能

由于imagView在组成图像时,图像的比例和透明度都有非常大的开销。为了提高性能,应该进行如下操作:

尽可能的提供预定大小的图像。例如:如果需要一个大图像频繁的现实缩略图,应该考虑将缩略图存放的cache中。
限制图片大小
如果不必要,取消透明度混合

NOTE

如果希望子类化UIImageView,应该意识到以下的行为:

UIImageView已经优化了图片的显示。UIImageView没有调用子类的drawRect:方法。如果子类希望自定义绘制代码,应该子类化UIVIew
新的imageView对象默认配置为忽略用户事件。如果希望处理UIImageView子类的自定义事件,必须将userInteractionEnabled的变量设置为YES。

初始化对象

-(id)initWithImage:(UIImage *)image
返回一个通过指定图片初始化的UIImageView对象

-(id)initWithImage:(UIImage *)image highlightedImage:(UIImage *)highlightedImage
返回一个通过正常图片以及强调图片初始化的UIImageView对象

图像数据

@property (nonatomic, retain)UIImage * image
在imageView正常状态时显示的图像

@property (nonatomic, retain) UIImage * highlightedImage
在imageView在强调状态时显示的图像

动画图像

@property (nonatomic,copy) NSArray * animationImages
用于动画使用的图像数组

@property (nonatomic, copy) NSArray * highlightedAnimationImages
强调状态时用于动画使用的图像数组

@property (nonatomic) NSTimeInterval animationDuration
一个图像周期花费的时间,单位为秒。该属性的默认值为(图片数 * 1/30 s)。

@property (nonatomic) NSInteger animationRepeatCount
动画重复的次数

-(void)startAnimating
开始receiver中的图像动画

-(void)stopAnimating
停止receiver中的图像动画

-(BOOL)isAnimating
表示当前动画是否运行

设置与获得属性

@property (nonatomic, getter=isUserInteractionEnabled) BOOL userInteractionEnabled
表示是否忽略用户事件,将其从事件队列中移除。该属性从UIVIew中继承。

@property (nonatomic, getter=isHighlighted) BOOL highlighted
决定当前image是否为强调状态。

@property (nonatomic, retain) UIColor * tintColor
在视图层次结构中色彩模板图像使用的颜色。具体参考renderingMode

实践

基础

定义一个图像视图,为视图定义两种状态,即:正常状态下的图片和强调状态下的图片

代码片段>>
-(void) initStaticIamgeView:(int)x yCoordinate:(int)y{
staticImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image1.png"] highlightedImage:[UIImage imageNamed:@"image2.png"]];
staticImageView.frame = CGRectMake(x, y, 320, 213);

[self.view addSubview:staticImageView];
}


显示效果>>



进阶

定义一个图像视图,显示一组动画。

代码片段>>
-(void) initAnimatedImageView:(int)x yCoordinate:(int)y{
animatedImageView = [[UIImageView alloc] initWithFrame:CGRectMake(x, y, 320, 213)];
animatedImageView.animationImages = [[NSArray alloc] initWithObjects:[UIImage imageNamed:@"image1.png"],
[UIImage imageNamed:@"image2.png"],
[UIImage imageNamed:@"image3.png"],
[UIImage imageNamed:@"image4.png"],
[UIImage imageNamed:@"image5.png"],
[UIImage imageNamed:@"image6.png"],
nil];
//若是不设置动画周期,由于默认为1/30 s显示一个图片,会显示的非常快。
animatedImageView.animationDuration = 6; //设置后,每s显示一个图片

//设置动画循环的周期数,当动画循环结束之后,图像将会消失
animatedImageView.animationRepeatCount = 1;

[animatedImageView startAnimating];
[self.view addSubview:animatedImageView];
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  iOS uiimageview