美文网首页
2.3 UIImageView

2.3 UIImageView

作者: 草根小强 | 来源:发表于2019-04-08 16:45 被阅读0次

    UIImageView

    - (void)viewDidLoad {
        [super viewDidLoad];
        // Do any additional setup after loading the view, typically from a nib.
        [self aboutImageView];
    }
    
    - (void)aboutImageView{
        //1. 实例化一个imageView
        UIImageView *imageView = [[UIImageView alloc] init];
        //2.设置一个frame
    //    imageView.frame = CGRectMake(100, 100, 100, 100);
         //全屏大小
        imageView.frame = self.view.bounds;
        
        //3.设置一个背景颜色
        imageView.backgroundColor = [UIColor redColor];
        
        //4。添加到屏幕上显示  写在最后也可以
       
        [self.view addSubview:imageView];
        
        //UIImageView常用属性的方法(写在前面和写在这里都是差不多)
        // 设置要显示的图片
        imageView.image = [UIImage imageNamed:@"cat_angry0000.jpg"];
        
        //设置图片的填充方式
        //contentMode  最适合这个imageView 这个用  其他类的也可以用
    //    UIViewContentModeScaleToFill, //拉伸铺满, 有可能会导致图形变型
    //    UIViewContentModeScaleAspectFit, //保持原图的比例不变,适应imageView
    //    UIViewContentModeScaleAspectFill,//保持原图的比例不变,在拉伸到填充到imageView为止。(有可能会超出image的范围)
        
        imageView.contentMode = UIViewContentModeScaleAspectFill;
        
        //超出视图部分裁剪
        imageView.clipsToBounds = YES;
        
        //imageView动画
        //所谓imageView的动画(帧图片),帧就是给imageView一组图片,imageView不停的去播放这组图片即可
        //实例化一个可变数组,用来存放所有的图片的对象
        NSMutableArray *imgs = [NSMutableArray array];
        
        //循环读取图片
        for (int i = 0; i < 30;i ++) {
            
            //1.格式化图片的名称
            //cat_foot_left0000
            NSString *name = [NSString stringWithFormat:@"cat_foot_left00%02d.jpg",i];
            
            //2.通过名字,生成UIImage
    //        UIImage *image = [UIImage imageNamed:name];
            
            NSString *path = [[NSBundle mainBundle] pathForResource:name ofType:nil];
            
            UIImage *image = [UIImage imageWithContentsOfFile:path];
            //3.把图片对象添加到数组中
            [imgs addObject:image];
            
        }
     
        //设置动画的每一帧(每一张图片)
        
        imageView.animationImages = imgs;
        
        //设置动画持续的时间,单位是秒
       //  NSTimeInterval 就是double
        imageView.animationDuration = 1;
        
        //设置动画播放的次数(0表示无数次)
        imageView.animationRepeatCount = 2;
        
       
        
        //开始动画
        [imageView startAnimating];
        
        //结束动画
    //    [imageView stopAnimating];
    #warning imageView帧动画可能会有一个内存占用的问题
        
        //原因:
        //UIImage对象要读取一张图片, 会占用内存
        //imageNamed这个方法会把图片缓存到内存中。不会自动释放
        
        //解决:
        // 换一种方式读取图片,并且在合适的时机释放
        
        //在动画播放完之后释放图片调用即可
        //在动画的播放时间 * 动画的播放次数之后,就可以去释放这些图片了
        
        
        //解决方案一: 怎样延时执行一些事件?
        //1.用NSTimer实现
        //2.在一段时间之后,延时处理一些事情:第一个参数表示延时的时间,第二个参数表示一段时间之后,需要处理的事件
        
        float delay = imageView.animationDuration *imageView.animationRepeatCount;
        
        dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delay * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
    //        在这里是一段时间之后,需要处理的事件
    //        释放帧动画数组中所有的图片
            imageView.animationImages = nil;
        });
    
        
    }
    
    @end
    

    相关文章

      网友评论

          本文标题:2.3 UIImageView

          本文链接:https://www.haomeiwen.com/subject/ikrpiqtx.html