Loading

IOS:个人笔记|UI__UIImageView__帧动画实现__资源存放问题__开发中的颜色介绍

        自己在网上找的比较老的教学视频,没找到16年之后新的培训资料。随手记录一些知识点,不定时进行补充。

//==================UIImageView的一些基本使用==================================================
//初始化,建立大小 
UIImageView *image=[[UIImageView alloc]initWithFrame:CGRectMake(4040400400)];
    //设置显示的图片
    image.image=[UIImage imageNamed:@"01.jpg"];//png类型可不加后缀
    image.backgroundColor=[UIColor grayColor];
    //图片的各种拉伸,显示效果
    image.contentMode=  UIViewContentModeScaleAspectFit;
    [self.view addSubview:image];
}
//=============设置imageview的frame的几种种方式=================================================
//方式一,知道图片大小的前提下写死
    UIImageView *image=[[UIImageView alloc]initWithFrame:CGRectMake(40, 40, 400, 400)];
    //设置显示的图片
    image.image=[UIImage imageNamed:@"01.jpg"];//png类型可不加后缀
    //方式二,动态的获取图片大小,弄清ImageView和Image的关系就好
    UIImageView *imageView=[[UIImageView alloc]init];
    UIImage *imageP=[UIImage imageNamed:@"01.jpg"];
    imageView.frame=CGRectMake(0, 0, imageP.size.width, imageP.size.height);
    imageView.image=imageP;
    //方式三  直接赋予图片,让Imageview对象去自动随着图片大小而变化,同时使用center确定位置
    UIImageView *imageView2=[[UIImageView alloc ]initWithImage:[UIImage imageNamed:@"01.jpg"]];
    imageView2.center=CGPointMake(500,500);

这个在教学视频中丢失了一节,所以我直接在网上找了一份课程中的代码。然后自己加了些理解。
主要把对象的属性和方法弄明白也就差不多了


首先图片名称,按数字命名1,2,3这样先命名好。for循环里把图片挨个添加到数组。
UIImageView对象
animationImages属性点进去是@property (nullable, nonatomic, copy) NSArray<UIImage *> *animationImages
说明这个属性其实是一个存放照片数组的东西。


animationRepeatCount点进去@property (nonatomic) NSInteger      animationRepeatCount;      // 0 means infinite (default is 0)
大意是说这个参数为0的话,就一直重复播放


animationDuration点进去看一下@property (nonatomic) NSTimeInterval animationDuration;         // for one cycle of images. default is number of images * 1/30th of a second (i.e. 30 fps)默认值是1s走完30张图片的时间,每张图片就算1/30s,如果自己有需求,可以改为0.5s,或1.5,这样就控制了播放的快慢
开始和结束是由系统提供的方法。

#pragma mark - 开始动画
- (IBAction)startAnimation {
    // 1.1 加载所有的图片
    NSMutableArray<UIImage *> *imageArr = [NSMutableArray array];
    for (int i=0; i<20; i++) {
        // 获取图片的名称
        NSString *imageName = [NSString stringWithFormat:@"%d", i+1];
        // 创建UIImage对象
        UIImage *image = [UIImage imageNamed:imageName];
        // 加入数组
        [imageArr addObject:image];
    }
    // 设置动画图片
    self.imageView.animationImages = imageArr;
    // 设置动画的播放次数
    self.imageView.animationRepeatCount = 0;
    // 设置播放时长
    // 1秒30帧, 一张图片的时间 = 1/30 = 0.03333 20 * 0.0333
    self.imageView.animationDuration = 1.0;
    
    // 开始动画
    [self.imageView startAnimating];
}
#pragma mark - 结束动画
- (IBAction)overAnimation {
    [self.imageView stopAnimating];
}

=================资源存放问题==================================================
加载图片的两种方式
      //方式一
     UIImageView *imageM1=[UIImage imageNamed:@"01.jpg"];
    //方式二
    NSString *path=[[NSBundle mainBundle] pathForResource:@"01" ofType:@"jpg"];
    UIImageView *imageM2=[UIImage imageWithContentsOfFile:path];
注意:加载Assets.xcassets里的图片,打包后变成assets.car,拿不到路径。只能通过imageNamed这种方式
放在项目中的文件,例如放在某个文件夹下 ,可以拿到路径,两种方式都能加载图片
imageNamed方式
即使指向它的指针被销毁,资源也不会从内存中释放。放到assets中的图片,默认有缓存,适合放经常使用的图片
imageWithContentsOfFile方式
指向它的指针被销毁,资源会从内存中释放。放在项目中的图片,没有缓存。适合放不常用,大批量的图片 。
获取某个项目中文件的路径的方法
[NSBundle mainbundle] pathforResource 或者URLforResource

 

========开发中的颜色介绍============
每一种颜色都是由N哥颜色通道组成
常见的颜色通道ARGB
常见颜色
白色全满值,黑色全0,灰色3搁置一样

32位颜色
颜色由AGRB四个颜色通道组成,每一个颜色通道都占据8Bit,每一个颜色通道的取值范围
二进制 [0b00000000,0b11111111]
十进制 [0,255]
十六进制[0x00,0xff]
表示形式,hex 格式
白色 #ffffffff
绿色 #ff00ff00 最前面的俩个是透明度
argb格式
白色 255,255,255,255
绿色 255,0,255,0


24位颜色,和32位基本相同,hex格式和rgb格式那里不带透明度

12位颜色,
同样也是四个通道,每个通道占4bit,
其通道取值范围是[0000,1111],[0,15],[0X00,0XFF]
颜色表示形式
Hex格式 绿色 #0f0,白色#fff
Rgb格式 绿色 0,15,0白色15,15,15
颜色通道越多,图像的质量就越高,占用的尺寸越大,图像就越清晰
png格式,jpg格式,一个有损,一个无损(压缩了某些通道)

开发技巧,适用于oc和html5
纯色的可以使用12bit,需要设置透明的可以使用24或32bit

posted @ 2020-09-14 10:39  DDD-SagerKing  阅读(157)  评论(0编辑  收藏  举报