IOS學習筆記 -- 基礎

來源:互聯網
上載者:User

標籤: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 ;

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.