UIImageView:图像视图控件:

   它是UIView的子类,因此也是视图控件,可以用来显示图像。因为它具有帧动画属性和操作方法,因此可以用来制作动画,其实动画就是很短的时间内,执行显示连续的很多张图片,人肉眼无法处分,使人看起来仿佛图像在动似的。例如典型的实例:汤姆猫实例

@interface UIImageView : UIView {

@property(nonatomic,retain) UIImage *image;    //图像

@property(nonatomic,retain) UIImage *highlightedImage ;    //高亮图像

@property(nonatomic,getter=isUserInteractionEnabled) BOOL userInteractionEnabled; //视图能否交互

@property(nonatomic,getter=isHighlighted) BOOL highlighted; //是否高亮

@property(nonatomic,copy) NSArray *animationImages;   //帧动画图像数组(全部的图像)

@property(nonatomic,copy) NSArray *highlightedAnimationImages ;  //高亮的帧动画图像数组 (全部的图像)

@property(nonatomic) NSTimeInterval animationDuration;  //执行一次全程的帧动画时间

@property(nonatomic) NSInteger  animationRepeatCount; //帧动画重复次数

@property (nonatomic, retain) UIColor *tintColor;//控件颜色

}

- (instancetype)initWithImage:(UIImage *)image; //初始化

- (instancetype)initWithImage:(UIImage *)image highlightedImage:(UIImage *)highlightedImage;//初始化

- (void)startAnimating;//开始帧动画

- (void)stopAnimating;//停止帧动画

- (BOOL)isAnimating;//是否正在执行帧动画

@end

实例如下:汤姆猫

只要图像素材充足,其实代码很简单,素材截图和代码如下:

#import "ViewController.h"

@interface ViewController ()

@property (weak, nonatomic) IBOutlet UIImageView *imgviewCat;

//每一个按钮都对应着自己的一个事件

- (IBAction)drinkBtnClicked;

- (IBAction)clawBtnClicked;

- (IBAction)birdBtnClicked;

- (IBAction)breadBtnClicked;

- (IBAction)CymbalBtnClicked;

- (IBAction)stomachBtnClicked;

- (IBAction)fartBtnClicked;

- (IBAction)knockoutBtnClicked;

- (IBAction)angryBtnClicked;

@end

@implementation ViewController

- (void)viewDidLoad {

[super viewDidLoad];

// Do any additional setup after loading the view, typically from a nib.

}

//喝牛奶

- (IBAction)drinkBtnClicked

{

[self action:@"drink" andNums:81];

}

//划玻璃

- (IBAction)clawBtnClicked

{

[self action:@"scratch" andNums:56];

}

//吃小鸟

- (IBAction)birdBtnClicked

{

[self action:@"eat" andNums:40];

}

//附蛋糕

- (IBAction)breadBtnClicked

{

[self action:@"pie" andNums:24];

}

//敲镲

- (IBAction)CymbalBtnClicked

{

[self action:@"cymbal" andNums:13];

}

//肚子痛

- (IBAction)stomachBtnClicked

{

[self action:@"stomach" andNums:34];

}

//放屁

- (IBAction)fartBtnClicked

{

[self action:@"fart" andNums:28];

}

//敲头头晕

- (IBAction)knockoutBtnClicked

{

[self action:@"knockout" andNums:81];

}

//打脸生气

- (IBAction)angryBtnClicked

{

[self action:@"angry" andNums:26];

}

//所有的动作事件

-(void)action:(NSString *)actionName andNums:(NSInteger) num

{

//如果正在执行当前的动画,对新触发的事件不做处理,直到当前的动作执行结束为止

if(self.imgviewCat.isAnimating)

{

return;

}

//1、加载图片资源到数组中

NSMutableArray *arrayM = [NSMutableArray array];

for(int i=0; i<num; i++)

{

NSString *catName = [NSString stringWithFormat:@"%@_%02d.jpg",actionName,i];

//通过imagNamed:这种方式加载图片,加载好的图片会一直保存在内存中,不会释放,这样下次在使用的时候就不需要再加载了,提高了运行速度;但 

是,缺点是由于缓存的缘故,如果资源过大,那么应用程序会一直占用太多的内存,这就是缓存。 

     //即使没有强类型指针引用,对象在方法结束后也不会被销毁,这就是缓存造成的。

//UIImage *imgcat = [UIImage imageNamed:catName];

//解决办法,换一种加载方式,只要没有强类型指针引用,加载的图片对象在方法执行完后就会被销毁

NSString *path = [[NSBundle mainBundle] pathForResource:catName ofType:nil];

//不能再传入图片名称,而是要传入放在根目录下的完整的图片路径,即绝对路径

UIImage *imgcat = [UIImage imageWithContentsOfFile:path];

[arrayM addObject:imgcat];

}

//2、设置UIImageView(图片框)的animationImages属性,这个属性包含的就是所有的帧动画

self.imgviewCat.animationImages = arrayM;

//3、设置动画持续时间

self.imgviewCat.animationDuration = self.imgviewCat.animationImages.count * 0.08;

//4、设置动画重复次数

self.imgviewCat.animationRepeatCount = 1;

//5、开始动画

[self.imgviewCat startAnimating];

//6.在动画执行完后,再清空图片集合,设置图片框在调用performSelector方法时,让其延迟执行

[self.imgviewCat performSelector:@selector(setAnimationImages:) withObject:nil

afterDelay:self.imgviewCat.animationImages.count*0.1];

}

@end

iOS:UIImageView图像视图控件的更多相关文章

  1. iOS:UITableView表格视图控件

    UITableView:表格视图控件,继承滚动视图控件UIScrollView,(类似于UIPickerView选择器,它主要通过设置数据源代理和行为代理实现协议来设置单元格)    对表格的操作主要 ...

  2. iOS:文本视图控件UITextView的详细使用

    文本视图控件:UITextView 介绍:它是一个文本域的编辑视图,可以在该区域上进行编辑(包括删除.剪贴.复制.修改等),它与文本框UITextField的不同之处是:当它里面的每一行内容超出时,可 ...

  3. iOS:网页视图控件UIWebView的详解

    网页视图控件:UIWebView 功能:它是继承于UIView的,是一个内置的浏览器控件,以用来浏览从网络下载下来的网页或者本地上加载下来的文档. 枚举: //网页视图导航类型 typedef NS_ ...

  4. [Xcode 实际操作]三、视图控制器-(10)在Storyboard中使用图像视图控件

    目录:[Swift]Xcode实际操作 本文将演示常用的图像视图控件在故事板中的使用. 打开故事板文件[Main.storyboard]点击选择视图控制器的根视图. 点击库图标,打开控件库面板. 在控 ...

  5. IOS 学习笔记(5) 控件 文本视图(UITextView)的使用方法

    相对于UILabell所支持的较短文本内容,UITextView对于长文本的支持更好.UITextView能够以滚动的方式全部浏览到长文本,并且就像UILabel那样,从ISO6,他也提供了对NSAt ...

  6. iOS:风火轮活动刷新视图控件UIActivityIndicatorView的详细使用

    动态风火轮视图控件:UIActivityIndicatorView   介绍:它是一种类似于风火轮旋转的视图控件,可用作刷新数据时显示加载过程所用,继承自UIView.   类型: typedef N ...

  7. Xamarin iOS教程之页面控件

    Xamarin iOS教程之页面控件 Xamarin iOS 页面控件 在iPhone手机的主界面中,经常会看到一排小白点,那就是页面控件,如图2.44所示.它是由小白点和滚动视图组成,可以用来控制翻 ...

  8. Unity3d IOS中的IGUI控件

    Unity3d IOS中的IGUI控件 @灰太龙  群63438968 我讲一下IOS中用的UI,我们采用IGUI,需要使用IGUI的高版本,在Unity3d 4.2中也可以使用的! 之前IGUI有个 ...

  9. win32 sdk列表视图控件(ListCtrl或ListView)资料整理

    列表视图控件是一种非常常用的控件,在需要以报表形式显示数据时,列表控件通常是最好的选择,许多专用的数据报表控件,也是在它的基础上派生而来.与树视图类似,列表控件可以由多个子项目组成,可以设置为Icon ...

随机推荐

  1. 洛谷P3521 [POI2011]ROT-Tree Rotation [线段树合并]

    题目传送门 Tree Rotation 题目描述 Byteasar the gardener is growing a rare tree called Rotatus Informatikus. I ...

  2. Bunch 转换为 HDF5 文件:高效存储 Cifar 等数据集

    关于如何将数据集封装为 Bunch 可参考 关于 『AI 专属数据库的定制』的改进. PyTables 是 Python 与 HDF5 数据库/文件标准的结合.它专门为优化 I/O 操作的性能.最大限 ...

  3. 机器学习之路:python 集成分类器 随机森林分类RandomForestClassifier 梯度提升决策树分类GradientBoostingClassifier 预测泰坦尼克号幸存者

    python3 学习使用随机森林分类器 梯度提升决策树分类 的api,并将他们和单一决策树预测结果做出对比 附上我的git,欢迎大家来参考我其他分类器的代码: https://github.com/l ...

  4. linux文件删除,剩余空间没变化

    centOS6.6,删除了一个13G的文件,但是使用df -h 查看,剩余空间没变化这个文件夹查看 du -h查看发现空间已经变少了.原因可能是删除文件时有进程在使用文件,导致空间未释放.yum in ...

  5. JVM内存模型以及垃圾回收

    JAVA堆的描述如下: 内存由Perm和Heap组成.其中Heap = {Old + NEW = { Eden , from, to } } JVM内存模型中分两大块: NEW Generation: ...

  6. 为什么Android手机总是越用越慢?

    根据第三方的调研数据显示,有77%的Android手机用户承认自己曾遭遇过手机变慢的影响,百度搜索“Android+卡慢”,也有超过460万条结果.在业内,Android手机一直有着“越用越慢”的口碑 ...

  7. 【洛谷】2324:[SCOI2005]骑士精神【IDA*】

    P2324 [SCOI2005]骑士精神 题目描述 输入输出格式 输入格式: 第一行有一个正整数T(T<=10),表示一共有N组数据.接下来有T个5×5的矩阵,0表示白色骑士,1表示黑色骑士,* ...

  8. pear中几个实用的xml代码库

    1.XML_Beautifier 用于将一段排版凌乱的XML文档美化 <?php require_once "XML/Beautifier.php"; $fmt = new ...

  9. Codeforces Round #356 (Div. 2) D. Bear and Tower of Cubes dfs

    D. Bear and Tower of Cubes 题目连接: http://www.codeforces.com/contest/680/problem/D Description Limak i ...

  10. Codeforces Round #297 (Div. 2)D. Arthur and Walls 暴力搜索

    Codeforces Round #297 (Div. 2)D. Arthur and Walls Time Limit: 2 Sec  Memory Limit: 512 MBSubmit: xxx ...