+攝像頭和照片庫+

由於ios應用受到沙盒機制的限制 ,通常不能獲取照片或自己沙盒之外的其他數據。但可使用圖像選擇器UIImagePickerController;並在其代理 UIImagePickerControllerDelegate中處理選擇的圖片和拍攝的照片;

沙盒(箱)機制:是一種數據安全策略;每個應用程序都有自己的存儲空間;應用程序不能翻過自己的空間去訪問別的存儲空間的內容;應用程序請求的數據都要通過許可權檢測,若不符合條件,不會被放行;

目錄包括:

Documents:用於存儲一些非常大的文件或需要非常頻繁更新的數據,能夠進行iTunes或iCloud備份;

獲取目錄位置:

NSArray *doc = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomain Mask,YES);//只有一個元素;

Library:包含Preferences和Caches兩個目錄;前者用於存放程序的設置數據,後者用於存放應用程序數據,用於緩存文件;

tem:臨時文件目錄;不能使用iTunes或iCloud備份;

使用NSString *temp=NSTemporaryDirectory();

+應用程序本地化+

可在應用包中為支持的語言創建一個子目錄,每種語言的子目錄都包含一個翻譯為此種語言的應用資源子集。每個子目錄都稱為一個本地化項目,也稱為本地化文件夾;

使用iso的國家代碼作為唯一標識;

本地代號:語言代號+國家(地區)代號;

有時國家代號可省略,如en-US.lproj是精確查找,若沒有打開再找en-lproj;

包括:

都須先在項目下的Locailzation添加語言支持;

+ 文本信息本地化:

- 系統按鈕和信息:在工程名—>Localizations下點擊+;

-應用名稱:添加一個StringFile,命名為InfoPlist.strings(必須);再添加應用名:CFBundleDisplayName="China";

-使用genstring可從源程序文件中掃描NSLocalizedString的宏並取出字元,輸出到本地文件中;

+ XIB和storyboard的本地化:會直接生成想著控制項的id名的strings文件;

+ 資源本地化:圖片和音頻等;直接選中圖片資源點擊Locailzation,選擇要放入的語言文件夾下,並使用圖片資源名都相同;

在訪問資源文件時,文件夾和組是有區別的:訪問文件夾中的資源需要將文件夾作為路徑;而組中的資源可直接使用文件名訪問;

Target(目標)與Project(工程)關係:一個target就是一個編譯後的產品;一個project包含多個Target;

Scheme(方案):在Xcode左上角的運行處,可進行編輯;指一個要編譯執行的target,包括了編譯這個Target的配置信息,以及運行target的測試方案。一信Xcode中包含多個方案,但一次只能活躍一個;

視圖分類:

控制項:繼承自UIController,能響應事件;

窗口:UIWindow,一個ios應用只有一個UIWindow對象,是所有子視圖的根容器;

容器視圖:UIScrollView,UIToolbar及其子類;

顯示視圖:

文本和web視圖:能顯示多行文本和html的視圖;UITextView和UIWebView;

導航視圖:UITabBar和UINavigationBar;

警告框和操作表:

** 鍵盤顯示的隱藏的監聽:會發出一個通知:UIKeyboardDidHideNotification和UIKeyboardDidShowNotification;

屏幕適配:在Iphone屏幕中狀態欄高20點,導航欄44點,標籤欄49點;(多用44點這個值)

Auto Layout布局:傳統布局只能設置視圖與屏幕的上下左右邊距,不能設置屏幕中視圖之間的距離;在iOS6後引入Auto Layout技術,以解決多屏幕問題;

使用約束(constraint)來定義視圖間的關係

【在Interface Builder中可使用約束;但在代碼構建界面時不推薦使用,而是自己根據屏幕大小動態計算界面的位置】

stack:將視圖對象添加到堆視圖中;

對齊:

Pin:創建距離和位置的想著約束;

堆視圖(Stack View):是一種容器視圖,可包含子視圖;專為界面布局而設計的;(可當android中的LinearLayout使用);

(在iPhone6/6 plus後Auto Layout已不能解決多屏幕適配的問題了;它只能解決界面差別小的問題,而界面差別很大時採用不同的用戶界面文件)

為應對新形式的變化,在iOS8後採用新的屏幕適配技術Size Class;它依賴並建立在Auto Layout技術之上;

通過.xcassets添加的圖片資源:

1x:表示普通顯示屏使用的圖片;

2x:表示iPhone4s、iPhone5/5s/5c使用的圖片;

3x:表示iPhone6/6s plus顯示使用的圖片;

模態視圖:有時需要放棄主要任務轉而去做其他次要任務,然後再返回到主任務,這個次要任務就是在模態視圖中完成的;默認情況下,模態視圖是屏幕下方滑出來的,完成時需要關閉這個模態視圖,若不關閉則無法招待後續操作;

-presentViewController:animated:completion: 呈現模態視圖;

-dismissViewControllerAnimated:completion: 關閉模態視圖;

單例:

@implementation ToolManager

static ToolManager *instance;

+(ToolManager *)getInstance{

static dispatch_once_t once;

dispatch_once(&once, ^{

instance = [[ToolManager alloc] init];

});

return instance;

}

@end

UIApplication:shareApplication:獲取一個實例;

打開默認系統應用

// NSURL *url = [NSURL URLWithString:@"百度一下,你就知道"];

// NSURL *url = [NSURL URLWithString:@"tel://18508293280"];

NSURL *url = [NSURL URLWithString:@"sms://18508293280"];

[[UIApplication sharedApplication]openURL:url options:nil completionHandler:^(BOOL success) {

if (success) {

NSLog(@"打開成功");

}else{

NSLog(@"打開失敗");

}

}];

[代理模式下的約定:在使用委託命名時,如若以UITextField發出的消息,則以textField開頭,後面跟三個動詞Should、Will、Did;Should應該返回一個BOOL類型;Did沒有返回值;Will也沒有返回值;都把發送消息的對象作為參數傳入]

推薦閱讀:

相关文章