UIKit基礎控件小結



iOS開發概述............................................................................................................................................................ 2

UI基礎控件............................................................................................................................................................... 2

1.     UILabel——標籤.................................................................................................................................. 2

2.     UIImageView——圖像視圖............................................................................................................... 2

3.     UIButton——按鈕................................................................................................................................ 3

4.     UITextField——文本框控件.............................................................................................................. 3

5.     UISwitch——開關控件....................................................................................................................... 4

6.     UISlider——滑塊控件......................................................................................................................... 4

7.     UIStepper——計數器控件.................................................................................................................. 5

8.     UISegmentControl——選項卡控件.................................................................................................. 5

9.     UIView.................................................................................................................................................... 5

Foundation框架...................................................................................................................................................... 6

1.     NSStringNSMutableString............................................................................................................. 7

2.     NSNumber.............................................................................................................................................. 7

3.     NSDate.................................................................................................................................................... 7

4.     NSArrayNSMutableArray.............................................................................................................. 7

5.     NSDictionaryNSMutableDictionary........................................................................................... 7

MVC體系結構.......................................................................................................................................................... 8

Model:數據模型........................................................................................................................................... 8

View:視圖...................................................................................................................................................... 8

Controller:控制器........................................................................................................................................ 8

代理協議消息傳遞機制.......................................................................................................................................... 8

NSTimer計時器....................................................................................................................................................... 8

聲音和音效的播放.................................................................................................................................................. 9

聲音................................................................................................................................................................... 9

音效................................................................................................................................................................... 9

 

UIKIT基礎控件小結

iOS開發概述

  1. cocos體系結構,一共有四層框架,要調用不同的功能,需要使用不同的框架。前期主要學習cocos touch層的UIKit框架

  2. iOSandroid的對比

  • iOS是基於UINX,用C語言開發的,直接與系統底層交互,性能高

  • andorid是基於Linux,用Java語言開發,基於虛擬機運行,性能差

UI基礎控件

1.    UILabel——標籤

作用:顯示文字

屬性:

text屬性:是label的文字

         alignment屬性:對齊方式

lines屬性:如果爲0,不限制行數,但是Label需要有足夠大的空間顯示內容

Action

2.    UIImageView——圖像視圖

作用:在一個區域內,顯示圖像。

注意:UIImage是一個二進制的圖像數據,而UIImageView是用來顯示圖像數據的區域

屬性:

image屬性:用於設置在圖像視圖中顯示的圖片

         要從bundle加載圖像,可以使用[UIImage imageNamed:]方法。

UIImageView本身可以做序列幀動畫,要使用序列幀動畫,我們需要指定三個屬性:

  1. animationsImages:序列幀圖像數組

  2. animationDuration:一組序列幀圖片播放完成需要的時間

  3. animationRepeatCount:序列幀動畫重複的次數,默認爲0,循環播放

設置完UIImageView的動畫屬性之後,需要使用startAnimation方法啓動動畫,如果要停止動畫,可以使用stopAnimation方法。

另外,可以使用isAnimating屬性,判斷當前是否正在播放動畫

Action

3.    UIButton——按鈕

作用:用戶交互的主要控件,有六種類型,其中自定義類型使用最爲普遍

屬性:

title屬性:是按鈕的文字

titleColor屬性:是按鈕的顏色

image屬性:是按鈕顯示的圖像

提示:如果同時指定了imagetitle屬性,當按鈕空間不夠時,image優先顯示;另外,image屬性在按鈕中不會變形

backgroundImage屬性:是按鈕的背景圖片,注意,按鈕的背景圖片會根據按鈕的實際大小拉伸,在使用背景圖片時,尤其需要注意按鈕的大小

backgroundColor屬性:按鈕的背景顏色屬性,僅在自定義類型的按鈕有效

 

使用技巧:通常在指定同一類型的按鈕操作時,我們習慣用tag區分按鈕,然後統一調用同一個方法

注意:設置按鈕屬性的同時,需要指定屬性應用的狀態,通常使用Normal狀態,Highlight是按鈕長按下的狀態

ActionTouchUpInside

4.    UITextField——文本框控件

作用:供用戶輸入或編輯文本

屬性:

text屬性:獲得或設置文本框中的文字

使用文本框控件時需要注意幾項事情:

  1. 在輸入不同類型的文本時,需要注意鍵盤的類型,譬如輸入QQ號要使用數字鍵盤。輸入身份證號,需要自定義數字鍵盤或者默認打開數字的全鍵盤

  2. 使用自定義數字鍵盤時,如果在越獄的機器上,可能會出現格式顯示問題

  3. 如果界面上有多個文本框供用戶輸入時,要注意回車鍵的設置,實現文本框由上至下的切換,切換到最後一個文本框,再按回車鍵時,調用對應的確認按鈕的方法

  4. 需要注意關閉鍵盤,關閉鍵盤有兩種方法:

  1. [self.view endEditing:YES];

  2. [textField resignFirstResponder];

    撤銷自身第一響應者的身份

    要獲取鍵盤輸入的焦點,可以設置textFieldbecomeFirstResponder屬性,讓文本框成爲第一響應者即可。

  1. 要監聽文本框的回車事件,需要設置文本框的delegate,同時讓視圖控制器遵從<UITextFieldDelegate>協議

    以上四個控件主要應用在應用程序中。

5.    UISwitch——開關控件

作用:設置某一個屬性開或者關的狀態

屬性:

state屬性:on/off

使用isOn可以判斷開關當前是否打開

ActionvalueChanged

6.    UISlider——滑塊控件

作用:允許用戶使用手指拖動滑塊,產生數值變化的控件

屬性:

minimumValue:滑塊的最小數值

maximumValue:滑塊的最大數值

value:滑塊的當前數值

 

需要注意的時:滑塊沒有步長,滑塊數值通常是連續變化的,這樣可以保證滑塊動畫的連續性,因此,我們在使用滑塊時,需要格外留意是否有重複刷新的情況,例如照片查看器示例程序

Action valueChanged

7.    UIStepper——計數器控件

作用:用戶點擊“+”數值增加,點擊“-”數值減少

屬性:

minimumValue:滑塊的最小數值

maximumValue:滑塊的最大數值

value:滑塊的當前數值

stepValue:滑塊數值變化的步長

wraps:是否環繞,設置了環繞屬性之後,當數值到達最大值時會回覆到最小值,產生環繞效果。如果沒有設置環繞屬性,當到達最大值時,“+”會變灰禁止用戶點擊,當到達最小值時,“-”會變灰禁止用戶點擊

Action valueChanged

8.    UISegmentControl——選項卡控件

作用:用戶同一時間只能選擇一個選項,與開關不同,它可以設置多個選項供用戶選擇

屬性:

selectedSegmentIndex屬性:用戶當前選中的選項卡索引,第一個選項卡索引對應的數值是0

Action valueChanged

以上四個控件主要應用在設置頁面。

作用:

  1. 是一個容器,可以容納任何的控件或者視圖

  2. 所有的控件,最終均繼承自UIView

屬性:

  1. 繼承類屬性:

superView:每一個UIView最多隻能有一個父視圖,注意:UIViewController的根視圖沒有父視圖。

subViews:當前視圖所包含的子視圖/控件

  1. 位置大小類屬性

frame:設置視圖的邊框

bounds:設置視圖的邊界,用於指定視圖的大小,常用於視圖的子控件設置位置,因爲bounds屬性的原點,永遠是(0,0)

center:設置視圖的中心點位置,通常用於指定視圖的位置,在視圖動畫中比較常用

注意:

framecenter可以指定UIView的位置

framebounds可以指定UIView的大小

  1. 形變屬性

transform:可以指定視圖的平移、旋轉和縮放屬性

 

  • CGAffineTransformRotateCGAffineTransformScaleCGAffineTransformTranslation三個函數用於基於UIView當前的形變屬性繼續變形

  • CGAffineTransformMakeRotateCGAffineTransformMakeScaleCGAffineTransformMakeTranslation三個函數用於基於UIView初始的形變進行變形

動畫:

UIView封裝了三個塊代碼動畫:

  • [UIView animateWithDuration:animations:]

  •  [UIView animateWithDuration:animations:completion:]

  •  [UIView animateWithDuration:delay: options: animations: completion:]

  Foundation框架

凡是帶有Mutable字樣的類型,都是可變的,如果存在相對應的沒有Mutable字樣的類型,都是不可變的,一旦初始化之後,就不可以再修改。

1.    NSStringNSMutableString

    1. 字符串轉數字integerValue

    2. 字符串常用方法:[NSString stringWithFormat:@”格式字符串”, 參數…]

    3. 如果要表示:0001之類的數字格式可以使用”%04d”之類的格式字符串

    1. 是數字的NS對象的表達形式,如果要把數字添加到數組或者字典中,必須要進行轉換,同時要使用數組中的數字,還需要轉換成對應的數字。

    2. 要轉換數字可以使用OC提供的包裝方法:@(int)

    3. 要把NSNumber轉換成字符串,需要使用stringValue方法

    1. 是日期的數據類型

    2. 常用類方法[NSDate date]取出當前的系統時間

    3. timeIntervalSinceDate方法可以計算兩個時間的差值,以秒爲單位

    4. 特別需要注意,不要把NSDateNSData搞混,這對於初學者,是經常犯的錯誤。

4.    NSArrayNSMutableArray

    1. NSArray是不可變的,NSMutableArray是可變的,通常在使用時,可以用一個自定義方法,初始化一個NSMutableArray,而在方法之外,統一使用NSArray

    2. NSArray中,可以插入任何類型的對象,使用方法是:addObject(id)

    3. 要取出NSArray中的對象,可以使用整數下標獲取,例如:array[i]

    4. 需要注意的是:如果要將intfloatdoubleNSIntegerCGFloatCGPointCGRectCGSize這些類型的數據插入數組之前,都需要進行類型轉換

    5. 如果從Bundle中讀取數組,可以使用arrayWithContentOfFile:方法

5.    NSDictionaryNSMutableDictionary

    1. 字典和NSArray非常類似,不過字典是使用字符串鍵值進行維護的,它的可讀性更強

    2. 在數據字典中,字符串的鍵值不能夠重複

    3. 要向數據字典中添加對象,需要使用setValue:forKey:方法

    4. 要從數據字典中獲取對象,需要使用dict[@”keyName”];

    5. 如果要從Bundle中讀取字典,可以使用dictionaryWithContentsOfFile:方法

  MVC體系結構

Model:數據模型

負責數據的保存以及相關的處理方法,Model不知道它會被誰調用,也不知道什麼時候會被調用

View:視圖

負責界面上元素的顯示,通常在很多iOS應用程序中,視圖只是StoryBoard或者xib文件,一般不會在視圖中寫太多的代碼

Controller:控制器

負責界面上數據的顯示,以及用戶與界面發生交互之後,通知數據模型,做相應的處理。控制器是視圖與數據模型之間的紐帶和橋樑。通常在大多數應用程序中,視圖控制器中的代碼是最多的。

iOS開發中,每一個Controller都有切僅有一個跟視圖,如果使用Storyboard建立的應用程序,Xcode會自動設置一個view作爲視圖控制器的跟視圖,也是第一個顯示在用戶面前的視圖。

代理協議機制在iOS開發中,是非常常用的一種消息傳遞機制,主要用於子視圖向父視圖傳遞數據,代理協議是單向消息傳遞。

要使用代理協議,需要以下幾個步驟:

  1. 子視圖控制器中需要做如下操作:

  1. 在子視圖控制器中定義協議,並且定義若干協議方法,注意:只有方法,而沒有方法的具體實現。協議的名稱通常是子視圖控制器的類名+Delegate

  2. 在子視圖控制器中定義代理屬性,代理的屬性是weak

  3. 子視圖控制器中,在需要時直接通過_delegate調用協議方法,就可以執行父視圖控制器中的相應方法的實現

  1. 父視圖控制器中需要做如下操作:

  1. 遵從子視圖控制器頭文件中定義的協議

  2. 在推出子視圖控制器前,設置自己是子視圖控制器的代理,通常在prepareSegue方法中實現

  3. 實現子視圖控制器中的協議方法,等待子視圖控制器的調用

  NSTimer計時器

使用實例代碼如下:

// 第一個參數:多長時間會觸發一次,以秒爲單位

// 第二個參數:如果看到函數的參數有target,一般情況下,都用self

// 第三個參數:SEL,需要調用其他的方法,就是每次時鐘被觸發的時候,去執行的方法

// 最多可以帶一個參數,就是時鐘本身

// 第四個參數,暫時不用考慮,設置成nil

// 第五個參數:是否重複,通常會設置YES

_gameTimer = [NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(updateTimer:) userInfo:nil repeats:YES];

 

在時鐘觸發方法中,可以使用sender.fireDate獲取到時鐘被觸發的時間

 

注意:使用NSTimer的時候,千萬不要忘記調用invalidate方法關閉時鐘。

 

NSTimer可能不會是及時相應觸發時間的,它的執行優先級相對較低,因此,不要使用NSTimer去做實時響應需求較高的週期性操作。

  1. 需要導入AVFoundation框架

  2. 需要從Bundle中加載文件,播放之前需要使用preparePlay方法,準備播放

  3. 可以設置聲音的循環次數、音量大小

  4. 播放效率相對略低,但是可以播放較大的聲音文件

  1. 導入AudioToolBox框架

  2. 使用C語言的函數直接將音頻加載到內存,通過SystemSoundID進行播放

  3. 在播放的時候,不容易中斷,也控制不了音量

  4. 播放效率高,通常使用不超過2秒的音頻文件

  5. 爲了避免同一個音效文件在不同視圖控制器中被重複加載,造成無謂的內存消耗,在使用音效時,通常會用一個數據字典進行維護

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章