iOS:UIImageView图像视图控件

简介:

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

 

 

程序猿神奇的手,每时每刻,这双手都在改变着世界的交互方式!


本文转自当天真遇到现实博客园博客,原文链接:http://www.cnblogs.com/XYQ-208910/p/4782306.html,如需转载请自行联系原作者
目录
相关文章
|
算法 API iOS开发
iOS MachineLearning 系列(3)—— 静态图像分析之区域识别
本系列的前一篇文章介绍了如何使用iOS中自带的API对图片中的矩形区域进行分析。在图像静态分析方面,矩形区域分析是非常基础的部分。API还提供了更多面向应用的分析能力,如文本区域分析,条形码二维码的分析,人脸区域分析,人体分析等。本篇文章主要介绍这些分析API的应用。
294 0
|
人工智能 文字识别 API
iOS MachineLearning 系列(4)—— 静态图像分析之物体识别与分类
本系列的前几篇文件,详细了介绍了Vision框架中关于静态图片区域识别的内容。本篇文章,我们将着重介绍静态图片中物体的识别与分类。物体识别和分类也是Machine Learning领域重要的应用。通过大量的图片数据进行训练后,模型可以轻易的分析出图片的属性以及图片中物体的属性。
379 0
|
iOS开发
iOS 多个滚动控件嵌套Demo
iOS 多个滚动控件嵌套Demo
72 0
|
iOS开发
iOS 常用的 上下左右 拉刷新控件
iOS 常用的 上下左右 拉刷新控件
106 0
|
存储 缓存 iOS开发
iOS 轻量化动态图像下载缓存框架实现
日常开发过程中,图片的下载会占用大量的带宽,图片的加载会消耗大量的性能和内存,正确的使用图片显得尤为重要。 同样也经常需要在各类型控件上读取网络图片和处理本地图片,例如:UIImageView、UIBtton、NSImageView、NSButton等等。
iOS 轻量化动态图像下载缓存框架实现
|
iOS开发
iOS短信验证码控件,自动输入回调两次解决办法
iOS短信验证码控件,自动输入回调两次解决办法
484 0
|
iOS开发
IOS的UITableView控件简单使用
IOS的UITableView控件简单使用
160 0
|
人工智能 API iOS开发
iOS MachineLearning 系列(2)—— 静态图像分析之矩形识别
本系列文章将完整的介绍iOS中Machine Learning相关技术的应用。本篇文章开始,我们将先介绍一些与Machine Learning相关的API的应用。使用这些API可以快速方便的实现很多如图像识别,分析等复杂功能,且不会增加应用安装包的体积。
275 0
|
算法 计算机视觉 iOS开发
iOS使用OpenCV之图像融合(二)
iOS使用OpenCV之图像融合(二)
iOS使用OpenCV之图像融合(二)
|
API iOS开发 Perl
iOS UIImageView文字头像,首字母缩略头像
iOS UIImageView文字头像,首字母缩略头像
iOS UIImageView文字头像,首字母缩略头像
下一篇
无影云桌面