1. 程式人生 > >傳智播客IOS 4期學習總結

傳智播客IOS 4期學習總結

獲得檔案方式:NSBundle *bundle =[NSBundle mainBundle];     NSString *path = [bundle pathForResource:@"fileName" ofType:@"plist"];    _imageData = [NSArray arrayWithContentsOfFile:path]    也可這樣寫:NSString *path = [bundle pathForResource:@"fileName.plist" ofType:nil]; 

1.NSBundle
1>
一個NSBundle代表一個資料夾,利用NSBundle

能訪問對應的資料夾
2>
利用mainBundle就可以訪問軟體資源包中的任何資源
3>
模擬器應用程式的安裝路徑
/Users/aplle/
資源庫/Application Support/iPhoneSimulator/7.1/Applications

UILabel 自動換行 把LINES設定為0

aspect fit -- 按寬高比 縮圖片

屬性的懶載入,例如有個image屬性

(NSImage *) image{

if(_image!= nil){

        /////////////////

         }

return _image;

}

OC物件中,UI元素定義屬性時候都用weak,非UI元素都用strong ? 貌似是

.jpg圖片一定要帶字尾

%02d 表示兩位,不夠的用零在前面填補

UIImage *image = [UIImage imageWithNamed:@"filename"]  這個會產生快取,佔用很多記憶體

UIImage *image = [UIImage imageWithContentsOfFile:path] 這個不會產生快取,不會佔用太多記憶體

[self  performSelector:(SEL) withObject:(id) afterDelay:5]; 表示self會在5秒後呼叫sel表示的函式,id那裡放參數

按鈕可以同時顯示兩張圖片 Image 和 Background都可以設定圖片。

繼承關係:UIButton --> UIControl --> UIView     UIImageView --> UIView  這就是為什麼按鈕可以監聽而圖片不能監聽的原因。因為UIControl裡面有addTarget...方法....

UIImage 裡面有一些動畫函式,點進去看一看便知。

螢幕寬度高度  self.view.frame.size.width/height

Label的字型大小設定:label.font = [UIFont systemFontOfSize:12];設定字號大小    label.textAlignment = NSTextAlignmentCenter;

按鈕內部預設兩個子控制元件:一個label (UILabel *titleLabel)一個ImageView(UIImageView  *imageView)  所以設定按鈕字型大小要這樣設定:btn.titleLabel.font = [UIFont systemFontOfSize:12]; 但是不建議 btn.titleLabel.text = @"sfdasfdasf"  這樣的話按鈕狀態的文字狀態就沒法設定了。所以不建議。

屬性設定的時候,注意:copy -> NSString ;  stong -> 一般物件 ; weak -> UI控制元件; assign -> 基本資料型別

重要:不要再在程式中直接用plist檔案,而要用資料Model。把plist檔案轉成資料Model的方法和注意點:

1、資料Model就是普通繼承NSObject的OC類

2、將plist中每個item中的專案都變為model中的屬性

3、在model中提供兩個初始化方法,假設model的名字是MyApp,則 - (instancetype) initWithDict:(NSDictionary *) dict 和  + (instancetype) appWithDict:(NSDictionary *) dict。

注意1:這是按照OC通常習慣來進行的!OC通常都提供這樣兩個樣式的同等作用的方法!! 可以自己去總結!!

注意2:IOS7 之後,建議instancetype取代id !因為id是萬能指標,什麼物件都可以返回id,而且程式中還不報錯!!比如,定義方法 +(id) returnDictionary; 你本意是返回一個字典,在程式中你這樣用 NSString *str = [XXX returnDictionary]; 不會報錯!!! 這樣字典賦值給字串了!!但是用instancetype之後 Xcode就會提示型別不符。另外,注意 instancetype只用在返回型別上,而不能用在引數上。而id卻可以。例如 xxx:(instancetype) bbb 就不可以

注意3:模型model中提供的兩個初始化方法,一個類方法,一個物件方法。類方法這樣定義:用self去呼叫那個物件方法即可!!注意是self ,而不是類名!!因為要考慮到該類的繼續的子類問題!!

xib檔案:NSArray *array = [bundle loadNibNamed:@"filename" owner:nil options:nil];    若確定xib中只有一個,則可以用 UIView * appview = [array lastObject]取出 。另外建立xib時,拖進UIView時候,選freeform可以改變形狀大小。然後用 appview.subviews[index] 來獲取放在xib上面的UI元素。還可以用tag方法獲取UI元素,比如 UIImageView *image = (UIImageView *)[appview viewWithTag:10];

vvdocument 註釋外掛