iOS:UIImageView图像视图控件
UIImageView:图像视图控件:
@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图像视图控件的更多相关文章
- iOS:UITableView表格视图控件
UITableView:表格视图控件,继承滚动视图控件UIScrollView,(类似于UIPickerView选择器,它主要通过设置数据源代理和行为代理实现协议来设置单元格) 对表格的操作主要 ...
- iOS:文本视图控件UITextView的详细使用
文本视图控件:UITextView 介绍:它是一个文本域的编辑视图,可以在该区域上进行编辑(包括删除.剪贴.复制.修改等),它与文本框UITextField的不同之处是:当它里面的每一行内容超出时,可 ...
- iOS:网页视图控件UIWebView的详解
网页视图控件:UIWebView 功能:它是继承于UIView的,是一个内置的浏览器控件,以用来浏览从网络下载下来的网页或者本地上加载下来的文档. 枚举: //网页视图导航类型 typedef NS_ ...
- [Xcode 实际操作]三、视图控制器-(10)在Storyboard中使用图像视图控件
目录:[Swift]Xcode实际操作 本文将演示常用的图像视图控件在故事板中的使用. 打开故事板文件[Main.storyboard]点击选择视图控制器的根视图. 点击库图标,打开控件库面板. 在控 ...
- IOS 学习笔记(5) 控件 文本视图(UITextView)的使用方法
相对于UILabell所支持的较短文本内容,UITextView对于长文本的支持更好.UITextView能够以滚动的方式全部浏览到长文本,并且就像UILabel那样,从ISO6,他也提供了对NSAt ...
- iOS:风火轮活动刷新视图控件UIActivityIndicatorView的详细使用
动态风火轮视图控件:UIActivityIndicatorView 介绍:它是一种类似于风火轮旋转的视图控件,可用作刷新数据时显示加载过程所用,继承自UIView. 类型: typedef N ...
- Xamarin iOS教程之页面控件
Xamarin iOS教程之页面控件 Xamarin iOS 页面控件 在iPhone手机的主界面中,经常会看到一排小白点,那就是页面控件,如图2.44所示.它是由小白点和滚动视图组成,可以用来控制翻 ...
- Unity3d IOS中的IGUI控件
Unity3d IOS中的IGUI控件 @灰太龙 群63438968 我讲一下IOS中用的UI,我们采用IGUI,需要使用IGUI的高版本,在Unity3d 4.2中也可以使用的! 之前IGUI有个 ...
- win32 sdk列表视图控件(ListCtrl或ListView)资料整理
列表视图控件是一种非常常用的控件,在需要以报表形式显示数据时,列表控件通常是最好的选择,许多专用的数据报表控件,也是在它的基础上派生而来.与树视图类似,列表控件可以由多个子项目组成,可以设置为Icon ...
随机推荐
- thinkphp5.0与thinkphp3.2之间的区别
5.0版本和之前版本的差异较大,本篇对熟悉3.2版本的用户给出了一些5.0的主要区别. URL和路由 5.0的URL访问不再支持普通URL模式,路由也不支持正则路由定义,而是全部改为规则路由配合变量规 ...
- js constructor 和 instanceof
说到这两个属性,那不得不说一下_proto_这个属性,通常这个属性是隐藏属性,是不允许被暴露的,而某些浏览器为了开发者能够很好的理解,而将这个属性暴露出来,比如Mozilla FireFox,这就是为 ...
- Oracle登录
一.安装Oracle 二.打开Database Configuration Assistant 三.打开SQL Plus 1.打开SQL Plus 2.输入用户名sys 3.输入口令1 as sysd ...
- synchronized锁优化
1.自旋锁和自适应自旋锁 sync在JDK1.6之前之所以被称为重量级锁,是因为对于互斥同步的性能来说,影响最大的就是阻塞的实现.挂起线程与恢复线程的操作都需要转入内核态中完成.从用户态转入内核态是比 ...
- Effective C++ —— 模板与泛型编程(七)
C++ templates的最初发展动机很直接:让我们得以建立“类型安全”的容器如vector,list和map.然而当愈多人用上templates,他们发现templates有能力完成愈多可能的变化 ...
- 【推导】【单调性】Petrozavodsk Winter Training Camp 2018 Day 1: Jagiellonian U Contest, Tuesday, January 30, 2018 Problem B. Tribute
题意:有n个数,除了空集外,它们会形成2^n-1个子集,给你这些子集的和的结果,让你还原原来的n个数. 假设原数是3 5 16, 那么它们形成3 5 8 16 19 21 24, 那么第一轮取出开头的 ...
- TortoiseGit + msysgit 记住帐号密码方法及使用密匙的方法
Windows 重度用户只能用 for windows 的软件了,所以虽然使用 Git,但还是要找专门的 windows 版本. 最近开始使用 GitHub 来托管一些小项目/兴趣,而自己是重度 wi ...
- PHP渗透中的奇淫技巧--检查相等时的漏洞
PHP是现在网站中最为常用的后端语言之一,是一种类型系统 动态.弱类型的面向对象式编程语言.可以嵌入HTML文本中,是目前最流行的web后端语言之一,并且可以和Web Server 如apache和n ...
- bzoj 1312 最大密度子图
晕,m=0是要输出1(弄的我还找管理员要数据,但明显题意是叫我们输出0呀) 最大密度子图,把边转换成点,然后二分答案,跑最大权闭合子图判定是否可行. #include <cstdio> # ...
- codevs 1052 地鼠游戏 优先队列
1052 地鼠游戏 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.codevs.cn/problem/1052/ Descriptio ...