標籤:c tar ext color a get
1、在OC中,不允許直接修改“對象”的“結構體屬性”的“成員變數”,但是允許修改“對象”的“結構體屬性”
修改結構體屬性的成員變數方法如下:
1> 使用臨時變數記錄對象的結構體屬性
2> 修改臨時變數的屬性
3> 將臨時變數重新賦值給對象的結構體屬性
2. 在程式開發中需要避免出現魔法數字(Magic Number)
使用枚舉類型,可以避免在程式中出現魔法數字
1> 枚舉類型實質上就是一個整數,其作用就是用來替代魔法數字
2> 枚舉類型中,指定了第一個整數之後,後面的數字會遞增
3、 frame & bounds & center
1> frame可以修改對象的位置和尺寸,在Use Autolayout下無法縮放
2> bounds可以修改對象的尺寸
3> center可以修改對象的位置
4. 首尾式動畫
// beginAnimations表示此後的代碼要“參與到”動畫中
[UIView beginAnimations:nil context:nil];
// setAnimationDuration用來指定動畫期間
[UIView setAnimationDuration:2.0];
// 要參與動畫的代碼
......
// commitAnimations,將beginAnimation之後的所有動畫提交並產生動畫
[UIView commitAnimations];
5. transform屬性
在OC中,通過transform屬性可以修改對象的平移、縮放比例和旋轉角度
常用的建立transform結構體方法分兩大類
1> 建立“基於控制項初始位置”的形變
CGAffineTransformMakeTranslation // 位移
CGAffineTransformMakeScale // 縮放
CGAffineTransformMakeRotation // 旋轉
2> 建立“基於transform參數”的形變
CGAffineTransformTranslate // 位移
CGAffineTransformScale // 縮放
CGAffineTransformRotate // 旋轉
補充:
在OC中,所有跟角度相關的數值,都是弧度值,180° = M_PI,正數表示順時針旋轉,負數表示逆時針旋轉
6、使用代碼建立控制項
在OC開發中,Storyboard中的所有操作都可以通過代碼實現。
使用代碼建立控制項的步驟如下:
1> 使用控制項對應類建立對象
2> 設定對象屬性:frame\color\text\image\backgroundImage……
3> [self.view addSubview:btn];將控制項添加到視圖
設定控制項監聽方法的範例程式碼如下:
[btn addTarget:self action:@selector(click:) forControlEvents:UIControlEventTouchUpInside];
提示:
1> addTarget方法定義在UIControl類中,這意味著可以給所有繼承自UIControl類的對象添加監聽方法
2> 監聽方法的第一個參數就是對象本身
3> 監聽方法的第二個參數是監聽控制項的事件
7、viewDidLoad
viewDidLoad是視圖載入完成後調用的方法,通常在此方法中執行視圖控制器的初始化工作
在viewDidLoad方法中,一定不要忘記調用父類的方法實現!
[super viewDidLoad];
8、懶載入建立控制項
1> 定義控制項屬性,注意:屬性必須是strong的。
2> 在屬性的getter方法中實現懶載入,範例程式碼如下:
- (UIImageView *)icon
{
if (!_icon) {
_icon = [[UIImageView alloc] init];
......
[self.view addSubview:_icon];
}
return _icon;
}
使用懶載入的好處:
1> 不必將建立對象的代碼全部寫在viewDidLoad方法中,代碼的可讀性更強
2> 每個控制項的getter方法中分別負責各自的執行個體化處理,代碼彼此之間的獨立性強,松耦合
9、 使用Plist檔案
使用Plist檔案的目的:將資料與代碼分離
載入方法:
NSString *path = [[NSBundle mainBundle] pathForResource:@"name" ofType:@"plist"];
NSArray *array= [NSArray arrayWithContentsOfFile:path];
提示:通常在方法中出現File字眼,通常需要傳遞檔案的全路徑作為參數
10、Images.xcassets中的素材
1> 只支援png格式的圖片
2> 圖片只支援[UIImage imageNamed]的方式執行個體化,但是不能從Bundle中載入
3> 在編譯時間,Images.xcassets中的所有檔案會被打包為Assets.car的檔案
11、 UIImageView的序列幀動畫
========================================
// 1. 是否正在動畫
[self.imageView isAnimating];
// 2. 設定圖片的數組
[self.imageView setAnimationImages:arrayImage];
// 3. 設定動畫時間長度,預設每秒播放30張圖片
[self.imageView setAnimationDuration:arrayImage.count * 0.005];
// 4. 設定動畫重複次數,預設為0,無限迴圈
[self.imageView setAnimationRepeatCount:1];
// 5. 開始動畫
[self.imageView startAnimating];
// 6. 動畫播放完成後,清空動畫數組
[self.imageView performSelector:@selector(setAnimationImages:) withObject:nil afterDelay:self.imageView.animationDuration];
12、UIImage imageNamed
在圖片使用完成後,不會直接被釋放掉,具體釋放時間由系統決定,適用於圖片小,常用的影像處理
如果要釋放快速釋放圖片,可以使用[UIImage imageWithContentsOfFile:path]執行個體化映像
13、檔案管理 [NSFileManager defaultManager]
常用方法
1> 判斷檔案是否存在
- (BOOL)fileExistsAtPath:(NSString *)path;
2> 將檔案從源路徑複製到目標路徑
- (BOOL)copyItemAtPath:(NSString *)srcPath toPath:(NSString *)dstPath error:(NSError **)error;
3> 刪除檔案
- (BOOL)removeItemAtPath:(NSString *)path error:(NSError **)error;
4> 返回指定路徑中的檔案清單
- (NSArray *)contentsOfDirectoryAtPath:(NSString *)path error:(NSError **)error ;