❤❤❤01-UIKIT基礎控件小結

iOS開發概述

  1. cocos體系結構,一共有四層框架,要調用不一樣的功能,須要使用不一樣的框架。前期主要學習cocos touch層的UIKit框架
  2. iOS和android的對比
  •    iOS是基於UINX,用C語言開發的,直接與系統底層交互,性能高
  •    andorid是基於Linux,用Java語言開發,基於虛擬機運行,性能差

UI基礎控件

1.    UILabel——標籤

做用:顯示文字android

屬性:數組

text屬性:是label的文字框架

           alignment屬性:對齊方式ide

lines屬性:若是爲0,不限制行數,可是Label須要有足夠大的空間顯示內容函數

Action:無性能

2.    UIImageView——圖像視圖

做用:在一個區域內,顯示圖像。學習

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

屬性:spa

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

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

UIImageView自己能夠作序列幀動畫,要使用序列幀動畫,咱們須要指定三個屬性:

1)    animationsImages:序列幀圖像數組

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

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

設置完UIImageView的動畫屬性以後,須要使用startAnimation方法啓動動畫,若是要中止動畫,可使用stopAnimation方法。

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

Action:無

3.    UIButton——按鈕

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

屬性:

title屬性:是按鈕的文字

titleColor屬性:是按鈕的顏色

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

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

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

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

 

使用技巧:一般在指定同一類型的按鈕操做時,咱們習慣用tag區分按鈕,而後統一調用同一個方法

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

Action:TouchUpInside

4.    UITextField——文本框控件

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

屬性:

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

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

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

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

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

4)      須要注意關閉鍵盤,關閉鍵盤有兩種方法:

a)   [self.view endEditing:YES];

b)      [textField resignFirstResponder];

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

要獲取鍵盤輸入的焦點,能夠設置textField的becomeFirstResponder屬性,讓文本框成爲第一響應者便可。

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

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

5.    UISwitch——開關控件

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

屬性:

state屬性:on/off

使用isOn能夠判斷開關當前是否打開

Action: valueChanged

6.    UISlider——滑塊控件

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

屬性:

minimumValue:滑塊的最小數值

maximumValue:滑塊的最大數值

value:滑塊的當前數值

 

須要注意的是:滑塊沒有步長,滑塊數值一般是連續變化的,這樣能夠保證滑塊動畫的連續性,所以,咱們在使用滑塊時,須要格外留意是否有重複刷新的狀況,例如照片查看器示例程序

Action: valueChanged

7.    UIStepper——計數器控件

做用:用戶點擊「+」數值增長,點擊「-」數值減小

屬性:

minimumValue:滑塊的最小數值

maximumValue:滑塊的最大數值

value:滑塊的當前數值

stepValue:滑塊數值變化的步長

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

Action: valueChanged

8.    UISegmentControl——選項卡控件

做用:用戶同一時間只能選擇一個選項,與開關不一樣,它能夠設置多個選項供用戶選擇

屬性:

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

Action: valueChanged

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

9.    UIView

做用:

1)      是一個容器,能夠容納任何的控件或者視圖

2)      全部的控件,最終均繼承自UIView

屬性:

1)    繼承類屬性:

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

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

2)    位置大小類屬性

frame:設置視圖的邊框

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

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

注意:

frame和center能夠指定UIView的位置

frame和bounds能夠指定UIView的大小

3)    形變屬性

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

  •    CGAffineTransformRotate、CGAffineTransformScale、CGAffineTransformTranslation三個函數用於基於UIView當前的形變屬性繼續變形
  •    CGAffineTransformMakeRotate、CGAffineTransformMakeScale、CGAffineTransformMakeTranslation三個函數用於基於UIView初始的形變進行變形

UIView封裝的簡單動畫效果

[UIView beginAnimations:nil context:nil];

// 設置動畫持續時間

[UIView setAnimationDuration:.3];

// 須要動畫的代碼段

[UIView commitAnimations];

UIView封裝的塊動畫

•UIView封裝了三個塊動畫方法
1.[UIView animateWithDuration:animations:]
2.[UIView animateWithDuration:animations:completion:]
3.[UIView animateWithDuration: delay: options: animations: completion:]

對比beginAnimations動畫的方式,塊動畫具備如下幾點優點:

1.能夠在動畫完成時作一些其餘的任務
2.能夠設置動畫延遲及動畫效果選項
3.塊動畫支持嵌套
 

  Foundation框架

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

1.    NSString和NSMutableString

1.1    字符串轉數字 integerValue

1.2    字符串經常使用方法:[NSString stringWithFormat:@」格式字符串」, 參數…]

1.3    若是要表示:0001之類的數字格式可使用」%04d」之類的格式字符串

2.    NSNumber

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

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

2.3    要把NSNumber轉換成字符串,須要使用stringValue方法

3.    NSDate

3.1    是日期的數據類型

3.2    經常使用類方法[NSDate date]取出當前的系統時間

3.3    timeIntervalSinceDate方法能夠計算兩個時間的差值,以秒爲單位

3.4    特別須要注意,不要把NSDate和NSData搞混,這對於初學者,是常常犯的錯誤。

4.    NSArray和NSMutableArray

4.1    NSArray是不可變的,NSMutableArray是可變的,一般在使用時,能夠用一個自定義方法,初始化一個NSMutableArray,而在方法以外,統一使用NSArray

4.2    在NSArray中,能夠插入任何類型的對象,使用方法是:addObject(id)

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

4.4    須要注意的是:若是要將int、float、double、NSInteger、CGFloat、CGPoint、CGRect、CGSize這些類型的數據插入數組以前,都須要進行類型轉換

4.5    若是從Bundle中讀取數組,可使用arrayWithContentOfFile:方法

5.    NSDictionary和NSMutableDictionary

5.1    字典和NSArray很是相似,不過字典是使用字符串鍵值進行維護的,它的可讀性更強

5.2    在數據字典中,字符串的鍵值不可以重複

5.3    要向數據字典中添加對象,須要使用setValue:forKey:方法

5.4    要從數據字典中獲取對象,須要使用dict[@」keyName」];

5.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. 播放效率相對略低,可是能夠播放較大的聲音文件
  5. 導入AudioToolBox框架
  6. 使用C語言的函數直接將音頻加載到內存,經過SystemSoundID進行播放
  7. 在播放的時候,不容易中斷,也控制不了音量
  8. 播放效率高,一般使用不超過2秒的音頻文件
  9. 爲了不同一個音效文件在不一樣視圖控制器中被重複加載,形成無謂的內存消耗,在使用音效時,一般會用一個數據字典進行維護

音效

相關文章
相關標籤/搜索