+攝像頭和照片庫
由于ios應用受到沙盒機制的限制 木柬,通常不能獲取照片或自己沙盒之外的其他數(shù)據(jù)。但可使用圖像選擇器UIImagePickerController恶复;并在其代理 UIImagePickerControllerDelegate中處理選擇的圖片和拍攝的照片齐遵;
沙盒(箱)機制:是一種數(shù)據(jù)安全策略塔插;每個應用程序都有自己的存儲空間想许;應用程序不能翻過自己的空間去訪問別的存儲空間的內(nèi)容;應用程序請求的數(shù)據(jù)都要通過權限檢測流纹,若不符合條件,不會被放行漱凝;
目錄包括:
Documents:用于存儲一些非常大的文件或需要非常頻繁更新的數(shù)據(jù),能夠進行iTunes或iCloud備份愕乎;
獲取目錄位置:
NSArray *doc = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomain Mask,YES);//只有一個元素壁公;
Library:包含Preferences和Caches兩個目錄紊册;前者用于存放程序的設置數(shù)據(jù),后者用于存放應用程序數(shù)據(jù),用于緩存文件掀亥;
tem:臨時文件目錄妥色;不能使用iTunes或iCloud備份垛膝;
使用NSString *temp=NSTemporaryDirectory();
+應用程序本地化
可在應用包中為支持的語言創(chuàng)建一個子目錄,每種語言的子目錄都包含一個翻譯為此種語言的應用資源子集吼拥。每個子目錄都稱為一個本地化項目,也稱為本地化文件夾凿可;
使用iso的國家代碼作為唯一標識枯跑;
本地代號:語言代號+國家(地區(qū))代號;
有時國家代號可省略粗卜,如en-US.lproj是精確查找纳击,若沒有打開再找en-lproj;
包括:
都須先在項目下的Locailzation添加語言支持;
- 文本信息本地化:
- 系統(tǒng)按鈕和信息:在工程名—>Localizations下點擊+纱昧;
-應用名稱:添加一個StringFile堡赔,命名為InfoPlist.strings(必須);再添加應用名:CFBundleDisplayName="China";
-使用genstring可從源程序文件中掃描NSLocalizedString的宏并取出字符善已,輸出到本地文件中;
- 系統(tǒng)按鈕和信息:在工程名—>Localizations下點擊+纱昧;
- XIB和storyboard的本地化:會直接生成相應控件的id名的strings文件;
- 資源本地化:圖片和音頻等纵东;直接選中圖片資源點擊Locailzation啥寇,選擇要放入的語言文件夾下洒扎,并使用圖片資源名都相同衰絮;
在訪問資源文件時猫牡,文件夾和組是有區(qū)別的:訪問文件夾中的資源需要將文件夾作為路徑;而組中的資源可直接使用文件名訪問淌友;
Target(目標)與Project(工程)關系:
一個target就是一個編譯后的產(chǎn)品;一個project包含多個Target;
Scheme(方案):在Xcode左上角的運行處瑰抵,可進行編輯器联;指一個要編譯執(zhí)行的target,包括了編譯這個Target的配置信息肴颊,以及運行target的測試方案渣磷。一信Xcode中包含多個方案,但一次只能活躍一個祟身;
視圖分類:
控件:繼承自UIController,能響應事件物独;
窗口:UIWindow,一個ios應用只有一個UIWindow對象挡篓,是所有子視圖的根容器帚称;
容器視圖:UIScrollView,UIToolbar及其子類;
顯示視圖:
文本和web視圖:能顯示多行文本和html的視圖戏羽;UITextView和UIWebView;
導航視圖:UITabBar和UINavigationBar;
警告框和操作表:
鍵盤顯示的隱藏的監(jiān)聽:會發(fā)出一個通知:UIKeyboardDidHideNotification和UIKeyboardDidShowNotification;
屏幕適配:在Iphone屏幕中狀態(tài)欄高20點楼吃,導航欄44點,標簽欄49點酷宵;(多用44點這個值)
Auto Layout布局:傳統(tǒng)布局只能設置視圖與屏幕的上下左右邊距浇垦,不能設置屏幕中視圖之間的距離;在iOS6后引入Auto Layout技術朴摊,以解決多屏幕問題此虑;
使用約束(constraint)來定義視圖間的關系
【在Interface Builder中可使用約束;但在代碼構建界面時不推薦使用贩疙,而是自己根據(jù)屏幕大小動態(tài)計算界面的位置】
stack:將視圖對象添加到堆視圖中况既;
對齊:
Pin:創(chuàng)建距離和位置的想著約束棒仍;
堆視圖(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顯示使用的圖片谅猾;
模態(tài)視圖:有時需要放棄主要任務轉(zhuǎn)而去做其他次要任務柄慰,然后再返回到主任務,這個次要任務就是在模態(tài)視圖中完成的税娜;默認情況下坐搔,模態(tài)視圖是屏幕下方滑出來的,完成時需要關閉這個模態(tài)視圖敬矩,若不關閉則無法招待后續(xù)操作概行;
-presentViewController:animated:completion: 呈現(xiàn)模態(tài)視圖;
-dismissViewControllerAnimated:completion: 關閉模態(tài)視圖弧岳;
單例:
@implementation ToolManager
static ToolManager *instance;
+(ToolManager *)getInstance{
static dispatch_once_t once;
dispatch_once(&once, ^{
instance = [[ToolManager alloc] init];
});
return instance;
}
@end
UIApplication:shareApplication:獲取一個實例凳忙;
打開默認系統(tǒng)應用
// NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"];
// 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發(fā)出的消息禽炬,則以textField開頭,后面跟三個動詞Should腹尖、Will柳恐、Did;Should應該返回一個BOOL類型;Did沒有返回值热幔;Will也沒有返回值乐设;都把發(fā)送消息的對象作為參數(shù)傳入]
博客地址:IOS開發(fā)學習筆記(六)