IOS:个人笔记|UI__UIImageView__帧动画实现__资源存放问题__开发中的颜色介绍
自己在网上找的比较老的教学视频,没找到16年之后新的培训资料。随手记录一些知识点,不定时进行补充。
//==================UIImageView的一些基本使用==================================================
//初始化,建立大小
UIImageView *image=[[UIImageView alloc]initWithFrame:CGRectMake(40, 40, 400, 400)];
//设置显示的图片
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