1. 程式人生 > 實用技巧 >IOS:個人筆記|UI__UIImageView__幀動畫實現__資源存放問題__開發中的顏色介紹

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