標籤:
首先建立一個iOS新工程,刪除工程自動建立的main.storyboard以及xib檔案,並且在info.plist上刪除這兩個選項
然後在項目配置中將maninterface設定為空白,將launch screen file設定為空白,建立一個view,命名為ViewController,因為此時已經有自動產生的類ViewController,所以不用建立類
建立建立xib檔案和類的串連,將file own的class修改為ViewControll,修改完成之後才能進行下一步
串連建立的xib檔案的view屬性和到file own,是的view與代碼關聯
此時,新的xib就可以產生一個介面對象了
但是啟動時還需要指定使用哪一個view,方法如下
在AppDelegate.m檔案的didFinishLaunchWithOptions方法中添加以下代碼
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; ViewController* view = [[ViewController alloc] initWithNibName:@"ViewController" bundle:nil]; self.window.rootViewController = view; self.window.backgroundColor = [UIColor whiteColor]; [self.window makeKeyAndVisible];
首先為引用簡曆windows,然後簡曆viewController,將視窗的主控制器設定為產生的view,並設定背景顏色,然後顯示介面
到這裡基本完成,但是這樣的做法產生的介面可能不匹配,此時還需要在項目配置中的launch screen file修改成我們建立的主視窗檔案,然後啟動,就可以擺脫storyboard了
UIButton iOS的按鈕控制項,使用UIButton可以實現按鍵點擊的功能,該控制項直接繼承自UIControl類,所以擁有UIControl的方法和屬性,目前使用的屬性包括
touch up inside 事件,也就是滑鼠的點擊事件
擷取當前按鈕上的文字 titleForState:UIControlStateNormal方法
設定按鍵不被按下的背景圖片 setBackGroundImage image forstate uicontrolstateNormal
設定按鍵被按下的背景圖片 setBackGroundImage image forstate uicontrolstatehighlights
UILabel iOS的文本展示地區
可以直接使用text屬性擷取控制項的文本和設定控制項的文本,還可以設定文本的格式
使用NSMutableAttributedString 來產生帶格式的字串,字串使用setAttrbutes設定屬性,lanbel有一個attributeText可以接收格式化字串
設定字型格式的時候使用字典,字典鍵是文本類型,值是字型大小
iOS使用mvc設計模式,XIB為view視圖,viewcontroller為視圖控制器,還有一個model是應用程式委託,也就是appDetegate類,該類包含有幾個方法,在應用程式的生命週期中起作用
didFinishLaunchingWithOptions 程式啟動子後的自訂設定
applicationWillResignActive 應用程式即將從活動狀態切換到不活動狀態的觸發代碼,在該方法中引用程式應該做自己的資源備份
applicationDidEnterBackGround 應用程式進入後台執行
applicationWillEnterForeground 應用程式進入活動狀態,也就是從後台恢複
applicationDidBecomeActive 應用程式處於非使用中的時候重新進入活動狀態
applicationWillTerminate 應用程式終止,程式即將停止的時候udiaoyong該方法
其中
didFinishLaunchingWithOptions在應用程式完成了所有的初始化工作並準備好與使用者互動的時候,調用這個方法
作用中的控制項 靜態控制項與被動控制項
被動控制項:大多數情況下使用者不能對其進行任何操作,只是一個展示用介面,例如UIImage控制項,當然,經過配置,也能對特定事件做出響應
還有一些控制項可以在被動狀態工作,但是其本身不會觸發方法,而是作為資料的容器,如UITextField控制項.
所有iOS控制項都是UIControl的子類,因為多點觸控的引入,以及觸發按下和離開都可以觸發不同的方法
UIView的所有子類都有一個tag屬性,該屬性只是一個數值,可以再interface builder中設定,也可以在到嗎中設定,系統永遠不會修改他得值,可以用於簡單的區分不同的控制項
UIImageView控制項,用於顯示圖片的控制項,包含有以下的屬性
1.mode 決定內容在視圖內部的顯示方式,也就是映像在視圖內部的對齊,一般使用scall fill 縮放鋪滿
2.tag 前面描述過,用於相同控制項的區分
3.interaction 包含兩個選項,第一個user interaction enable 指明當前對象能否和使用者進行互動,也就是能否響應一些方法,multiple touch 控制項是否支援多點觸控事件
4.alpha 定義控制項片的透明度,也就是映像背後內容的可見度,0完全透明 1完全不透明
5,background 確定視圖的背景顏色
6.drawing 包含有一系列繪製選項 opaque 告訴系統控制項的背後並沒有圖片需要繪製,並且允許系統加速控制項本身的繪製. hidden 隱藏某個對象 clear Graphics context 在繪製對象之前先使用一塊全黑的地區來覆蓋空間地區 clip subview 加入一個視圖view包含有子view ,該複選框決定了子view的繪製方式,選中之後,只有在父view之內的部分被繪製,之外的部分不會參與繪製,不選中,子view全部繪製,不管子視圖是否超過父視圖的邊界
7.autoresize subview 當前視圖發生變化的時候自動調整子視圖的大小
8,stretching 展開,該選項用於重新調整視圖大小的時候使用,將視圖的外邊緣保持不變,僅僅展開中間部分,而不是均勻展開視圖的全部內容
文本顯示UILabel控制項擁有以下設定屬性
1.text :文本顯示類型 plaintext 純文字 attributed text屬性文本
2.字型顏色設定,文本對其設定,行數設定
3.
文本輸入控制項UITextFeild,用於系統輸入文本使用
1.placeholder 預留位置 預留位置的文本是在文字框文本為空白的時候自動顯示的文本,可以起到提示使用者輸入什麼內容的作用
2.border style 設定文字框的邊框顯示風格
3.clearbutton設定.設定何時出現退出鍵,可以選著編輯時出現,編輯完成出現,不出現,編輯之後一直可見,clear when editing begin 指定使用者觸摸時清除文本,即一旦開始編輯就清除之前的文本輸入
4.adjust to fit :設定顯示文本是否隨著文本尺寸的長度增加而減少,選中自後,再編輯過程中全部文本都是可見的,但是最小不會小於最小字型大小
5.接下來就是定義輸入時鍵盤的行為 capitalization 使用word保證使用者的每個輸入單詞的首字母都自動轉化成大寫,return key 使用者結束輸入的時候鍵盤顯示的字元,autoenable returnkey 設定當文本為空白的時候,return key被禁用
6,secure 只是該輸入地區是否為密碼輸入地區
完成輸入關閉鍵盤
當一個輸入地區比如文字框,在使用者按下return 按鍵的時候,說明結束輸入,此時會觸發一個事件,名稱為 Did End On Exit,為該事件設定回應程式法,就能實現輸入完成自動關閉鍵盤,例如
- (IBAction)textFieldOnExit:(id)sender { [sender resignFirstResponder];//控制項自身放棄第一響應者的控制權並返回給使用者之前操作的控制項}
但是使用數字鍵台來輸入的時候,沒有return 按鍵,此時應該設定使用者按螢幕中沒有控制項的任何空白地區,都能關閉鍵盤,此時應當設定,觸摸背景關閉鍵盤,想要做到這一點,首先
先要將介面的基類修改為UIControl,(之前是UIView),修改後介面就擁有了響應事件的能力
為VIEW增加touch down事件,事件的響應函數如下
[self.nameField resignFirstResponder];[self.numberField resignFirstResponder];//將view中的所有佔用鍵盤的地方的響應權全都釋放掉
iOS滑動控制項UISlider 用於顯示滑動,主要事件
valueChanged 當滑塊被移動的時候觸發該事件,通過value屬性就能得到當前的值,值的最大和最小界限都能控制
當使用不同螢幕適配的時候,為所有的空間添加頂部約束,能夠有效地適配不同裝置的介面
分段控制項 UISegmentedControl 主要用於在不同的介面顯示不同的內容,類似於選項卡的一種控制項,可以選擇分段數量
選擇每一個分段的標題或者每一個分段的圖片,分段控制項的主要響應動作也是valueChanged,如下
- (IBAction)toggleControls:(UISegmentedControl *)sender{ if(sender.selectedSegmentIndex == 0)//通過分段控制項的selectedSegmentIndex來決定當前的現實情況,從0開始的顯示index { self.leftSwitch.hidden = NO; self.rightSwitch.hidden = NO; self.dosomethingButton.hidden = YES; } else { self.leftSwitch.hidden = YES; self.rightSwitch.hidden = YES; self.dosomethingButton.hidden = NO; }}
開關控制項UISwitch,用於顯示一個非0即1的狀態選擇按鈕
主要回應程式法 valueChanged,如下
-(IBAction)switchChanged:(UISwitch *)sender{ BOOL setting = sender.isOn;//擷取當前按鍵的狀態,是一個布爾值 [self.leftSwitch setOn:setting animated:YES];//根據狀態設定開關狀態 [self.rightSwitch setOn:setting animated:YES]; }
iOS動作表單和警告視圖
動作表單的作用是要求使用者在兩個以上的選項之間做出選擇,動作表單從底
部出現,顯示一系列按鈕供使用者選擇,使用者必須點擊其中一個按鈕才能繼續使用,常用於確認可能有危險或者無法復原的操作,
使用動作表單必須使用委託,使用者必須實現UIActionSheetDelegate協議,如下
@interface ViewController : UIViewController<UIActionSheetDelegate>
產生並顯示表單的操作為
- (IBAction)buttonPressed:(id)sender{ UIActionSheet* actionSheet = [[UIActionSheet alloc] initWithTitle:@"are you Sure" delegate:self cancelButtonTitle:@"no way" destructiveButtonTitle:@"yes i am sure" otherButtonTitles: @"foo",@"bar",nil]; [actionSheet showInView:self.view];}
initwithtitle 使用標題初始化,第一個參數為動作表單要顯示的標題,字串對象,第二個delegate 表單的委派物件,當按下表單的某個按鈕的時候,對應的委派物件收到資料,這裡指定為self,cancelButtonTitle 取消按鈕的標題 destructiveButtonTitle 按鈕的標題,相當於確認按鈕的標題,otherButtonTitle:任意數量的其他按鈕,參數是一個數組,必須以nil結束
然後調用action showInView:selfview 為動作表單指定一個父類並顯示出來,這裡指定自己的view
此時,一個動作表單就顯示了.
當用於決定了動作表單的選擇的時候,也就是按下了一個確定的按鈕的時候,動作表單會向產生時指定的委派物件發送一個訊息,訊息名為ActionSheet,我們繼承了
UIActionSheetDelegate協議,就必須實現ActionSheet方法,如下
-(void)actionSheet:(UIActionSheet *)actionSheet didDismissWithButtonIndex:(NSInteger)buttonIndex{ NSString* msg = nil; if(self.nameField.text.length > 0) { msg = [NSString stringWithFormat:@"you can breathe easy,%@,everything went ok.",self.nameField.text]; } else msg = @"you can breathe easy,everything went ok."; UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"something was done" message:msg delegate:self cancelButtonTitle:@"prew" otherButtonTitles:nil]; [alert show]; }
在這個方法中繼續之前動作表單的處理,應為actionsheet對象也隨之發送過來了,index也有了,所以能得到使用者按下的位置
前面的代碼中還用到了警告視圖,用於提示使用者發生了一些不尋常的事情,警告視圖可以只顯示一個按鈕也可以顯示多個按鈕
initwithtitle 第一個是參數為警告視圖的標題 message 警告視圖要顯示的資訊 處理警告視圖的委派物件 cancelButtonTitle 取消按鈕的標題 otherButtonTitles 其他按鈕的標題,數組,以nil結束
警告視圖並沒有和特定的視圖綁定在一起,所以不需要指定父視圖
viewdidload方法在view類中用於處理試圖載入完成之後的對視圖的額外設定,例如設定圖片背景色等等
iOS學習筆記1--在xcode6以上的版本中不使用storyboard以及部分控制項使用