iOS開發UI篇—iOS開發中三種簡單的動畫設置ios
【在ios開發中,動畫是廉價的】數組
1、首尾式動畫性能
代碼示例:動畫
// beginAnimations表示此後的代碼要「參與到」動畫中 [UIView beginAnimations:nil context:nil]; //設置動畫時長 [UIView setAnimationDuration:2.0]; self.headImageView.bounds = rect; // commitAnimations,將beginAnimation以後的全部動畫提交併生成動畫 [UIView commitAnimations];
說明:若是隻是修改控件的屬性,使用首尾式動畫仍是比較方便的,可是若是須要在動畫完成後作後續處理,就不是那麼方便了spa
2、block代碼塊動畫code
代碼示例:orm
//簡單的動畫效果 [UIView animateWithDuration:2.0 animations:^{ showlab.alpha=0; } completion:^(BOOL finished) { [showlab removeFromSuperview]; }];
說明:blog
(1)在實際的開發中更經常使用的時block代碼塊來處理動畫操做。圖片
(2)塊動畫相對來講比較靈活,尤其重要的是可以將動畫相關的代碼編寫在一塊兒,便於代碼的閱讀和理解.資源
3、序列幀動畫(以一個簡單的TOM貓動畫示例)
導入提早準備好的素材,對UIImageview和button按鈕進行連線。
代碼示例:
- (IBAction)eat { NSMutableArray *arrayM=[NSMutableArray array]; for (int i=0; i<40; i++) { [arrayM addObject:[UIImage imageNamed:[NSString stringWithFormat:@"eat_%02d.jpg",i]]]; } //設置動畫數組 [self.tom setAnimationImages:arrayM]; //設置動畫播放次數 [self.tom setAnimationRepeatCount:1]; //設置動畫播放時間 [self.tom setAnimationDuration:40*0.075]; //開始動畫 [self.tom startAnimating]; }
點擊按鈕,便可執行動畫,實現效果截圖以下:
4、補充知識
1. Images.xcassets中的素材
(1)只支持png格式的圖片
(2) 圖片只支持[UIImage imageNamed]的方式實例化,可是不能從Bundle中加載
(3) 在編譯時,Images.xcassets中的全部文件會被打包爲Assets.car的文件
2. UIImageView的序列幀動畫(須要考慮程序性能,釋放數據)
// 0. 是否正在動畫
[self.tom isAnimating];
// 1. 設置圖片的數組
[self.tom setAnimationImages:arrayM];
// 2. 設置動畫時長,默認每秒播放30張圖片
[self.tom setAnimationDuration:arrayM.count * 0.075];
// 3. 設置動畫重複次數,默認爲0,無限循環
[self.tom setAnimationRepeatCount:1];
// 4. 開始動畫
[self.tom startAnimating];
// 5. 動畫播放完成後,清空動畫數組
[self.tom performSelector:@selector(setAnimationImages:) withObject:nil afterDelay:self.tom.animationDuration];
3. UIImage imageNamed
(1)在圖片使用完成後,不會直接被釋放掉,具體釋放時間由系統決定,適用於圖片小,經常使用的圖像處理
(2)若是要釋放快速釋放圖片,能夠使用[UIImage imageWithContentsOfFile:path]實例化圖像
4. 方法重構的策略
(1) 將具備共性的代碼複製到一個新的方法
(2)根據不一樣的調用狀況,增長方法的參數
提示:在寫程序時不要着急重構,有時候把代碼先寫出來,更容易看清楚如何重構纔會更好
5. Bundle(包)中的圖片素材
往項目中拖拽素材時,一般選擇
(1) Destination: 勾選
(2) Folders:
1)選擇第一項:黃色文件夾
注意點:Xcode中分文件夾,Bundle中全部所在都在同一個文件夾下,所以,不能出現文件重名的狀況
特色:
a.能夠直接使用[NSBundle mainBundle]做爲資源路徑,效率高!
b.能夠使用[UIImage imageNamed:]加載圖像
2)選擇第二項:藍色文件夾
注意點:Xcode中分文件夾,Bundle中一樣分文件夾,所以,能夠出現文件重名的狀況
特色:
a.須要在[NSBundle mainBundle]的基礎上拼接實際的路徑,效率較差
b.不能使用[UIImage imageNamed:]加載圖