IOS:個人筆記|UI__UIImageView__幀動畫實現__資源存放問題__開發中的顏色介紹
//==================UIImageView的一些基本使用==================================================
//初始化,建立大小
UIImageView*image=[[UIImageViewalloc]initWithFrame:CGRectMake(40,40,400,400)];
//設定顯示的圖片
image.image=[UIImageimageNamed:@"01.jpg"];//png型別可不加字尾
image.backgroundColor=[UIColorgrayColor];
//圖片的各種拉伸,顯示效果
image.contentMode=UIViewContentModeScaleAspectFit;
[self.viewaddSubview: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=[[UIImageViewalloc]initWithImage:[UIImageimageNamed:@"01.jpg"]];
imageView2.center=CGPointMake(500 ,500);
這個在教學視訊中丟失了一節,所以我直接在網上找了一份課程中的程式碼。然後自己加了些理解。
主要把物件的屬性和方法弄明白也就差不多了
首先圖片名稱,按數字命名1,2,3這樣先命名好。for迴圈裡把圖片挨個新增到陣列。
UIImageView物件
animationImages屬性點進去是@property(nullable,nonatomic,copy)NSArray<UIImage*>*animationImages
說明這個屬性其實是一個存放照片陣列的東西。
animationRepeatCount點進去@property(nonatomic)NSIntegeranimationRepeatCount;//0meansinfinite(defaultis0)
大意是說這個引數為0的話,就一直重複播放
animationDuration點進去看一下@property(nonatomic)NSTimeIntervalanimationDuration;//foronecycleofimages.defaultisnumberofimages*1/30thofasecond(i.e.30fps)預設值是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=[UIImageimageNamed:@"01.jpg"];
//方式二
NSString*path=[[NSBundlemainBundle]pathForResource:@"01"ofType:@"jpg"];
UIImageView*imageM2=[UIImageimageWithContentsOfFile: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