IOS開發UI基礎之Plis檔案-字典轉模型

來源:互聯網
上載者:User

標籤:

什麼是plist檔案?

在開發中直接將資料寫在代碼裡面 不是一種合理的做法 如果資料經常改變 就需要經常翻開對應的代碼進行修改 造成代碼擴充性低

因此,可以考慮將經常變的資料放在?檔案中進?行儲存,程式啟動後從?檔案中 讀取最新的資料。如果要變動資料,直接修改資料?檔案即可,不?用修改代碼 

一般可以使?用屬性列表?檔案儲存體NSArray或者NSDictionary之類的資料,這 種“屬性列表?檔案”的副檔名是plist,因此也稱為“plist?檔案”

在Xcode建立plist檔案的步驟:

解析plist檔案

plist檔案的解析過程

plist的使用注意:

plist的檔案名稱不能叫做 “info” 、“Info” 之類的

添加plist等檔案資源的時候 也就是你將一個檔案拖到項目中的時候 一定要勾選下面的選項:

 

通過上面的講解 相信你已經知道了 我們從plist解析出來的是一個字典 當我們要擷取資料的時候 就可以直接使用字典中的key 去擷取value但是使用字典是由一定的缺陷的 :? 般情況下,設定資料和取出資料都使?用“字串類型的key”,編寫這些key時,編輯器沒有智能提?示,需要?手敲
dict[@"name"] = @"Jack";NSString *name = dict[@"name"];
  • ?  ?手敲字串key,key容易寫錯

  • ?  Key如果寫錯了,編譯器不會有任何警告和報錯,造成設錯資料或者取錯資料 ● 使?用模型的好處

  • 所謂模型,其實就是資料模型,專門?用來存放資料的對象,?用它來表?示資料會更加專業
  • 模型設定資料和取出資料都是通過它的屬性,屬性名稱如果寫錯了,編譯器會馬上報錯,因此,保證了資料的正確性
  • 使?用模型訪問屬性時,編譯器會提供?一系列的提?示,提?高編碼效率
如何字典轉模型?字典轉模型的過程

字典轉模型的操作最好封裝在模型內部模型應該提供?一個可以傳?入字典參數的構造?方法一般模型中都會提供這樣兩個構造方法 instancetype● instancetype 在類型表?示上,跟id?一樣,可以表?示任何物件類型
● instancetype只能?用在傳回值類型上,不能像id?一樣?用在參數類型上
● instancetype?比id多?一個好處:編譯器會檢測instancetype的真實類型

 

類首碼
  •        使?用Objective-C開發iOS程式時,最好在每個類名前?面加?一個首碼,?用來標識這個類的“?老家”在哪
  •       ?目的是防?止N個?人開發了?一樣的類,衝突了
  •       ?比如Jake Will、Kate Room在同?一個項?目中都各?自開發了個Button類,這樣的程式是不能運?行起來的
  •      解決?方案:Jake Will的類名叫做JWButton,Kate Room的類名叫做KRButton
 View的封裝如果?一個view內部的?子控制項?比較多,?一般會考慮?自訂?一個view,把它內部?子控制項的建立屏蔽起來,不讓外界關?心 外界可以傳?入對應的模型資料給view,view拿到模型資料後給內部的?子控制項 設定對應的資料  封裝控制項的基本步驟  在initWithFrame:?方法中添加?子控制項,提供便利構造?方法  在layoutSubviews?方法中設定?子控制項的frame(?一定要調?用super的 layoutSubviews) 增加模型屬性,在模型屬性set?方法中設定資料到?子控制項上

 

Xib和storyboard對?共同點:

 

  •   都?用來描述軟體界?面

 

 

  •  都?用Interface Builder?工具來編輯
  • 本質都是轉換成代碼去建立控制項
不同點:
  • Xib是輕量級的,?用來描述局部的UI界?面
  • Storyboard是重量級的,?用來描述整個軟體的多個界?面,並且能展?示多個界?面之間的跳 轉關係
XIB載入的兩種方式:

使?用xib?自訂view的步驟
  • 建立一個自訂的控制項類

  • 建立xib檔案 (檔案名稱減一和view的類名一致)

  • 修改xib中view的類名

  • 封裝xib的載入過程

  • 增加模型屬性 在模型屬性set方法中設定資料到子控制項上面
注意點:一個控制項有2種建立?方式● 通過代碼建立
- 初始化時?一定會調?用initWithFrame:?方法

● 通過xib\storyboard建立
- 初始化時不會調?用initWithFrame:?方法,只會調?用initWithCoder:?方法- 初始化完畢後會調?用awakeFromNib?方法

● 有時候希望在控制項初始化時做?一些初始化操作,?比如添加?子控制項、設定基本屬性

● 這時需要根據控制項的建立?方式,來選擇在initWithFrame:、initWithCoder:、awakeFromNib的哪個?方法中操作

 UIImage 簡單介紹

一個UIImage對象代表一張圖片 一般通過imageNamed:方法就可以通過檔案名稱附加元件目中的圖片

如:

UILabel的基本設定

UIFont  代表字型 常見的建立方法有以下幾個

UIButton、UIImageView、UILabel的選擇特點UIButton
- 既能顯?示?文字,又能顯?示圖?片(能顯?示2張圖?片,背景圖?片、內容圖?片)- 長按?高亮的時候可以切換圖?片\?文字
- 直接通過addTarget...?方法監聽點擊

 UIImageView
- 能顯?示圖?片,不能直接通過addTarget...?方法監聽點擊

 UILabel
- 能顯?示?文字,不能直接通過addTarget...?方法監聽點擊

選擇

僅僅是顯?示資料,不需要點擊 建議選擇UIImageView、UILabel

不僅顯?示資料,還需要監聽點擊
建議選擇UIButton其實UIImageView、UILabel也可以通過?手勢辨識器來監聽(後?面課程會學)

長按控制項後,會改變顯?示的內容不?用考慮了,選擇UIButton(因為UIButton有highlighted這種狀態)

同時顯?示2張圖?片:背景圖?片、內容圖?片不?用考慮了,選擇UIButton

 

常用的Xcode外掛程式推薦:http://www.cocoachina.com/industry/20130918/7022.html

如何獲得APP內部資源
  • 安裝一個iTools 百度一下就有
  • 用USB串連裝置 開啟iTools
  • 然後選擇一個應用

 

 補充知識:
## 定時任務- 方法1:performSelector// 1.5s後自動調用self的hideHUD方法[self performSelector:@selector(hideHUD) withObject:nil afterDelay:1.5];- 方法2:GCDdispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{    // 1.5s後自動執行這個block裡面的代碼    self.hud.alpha = 0.0;});- 方法3:NSTimer// 1.5s後自動調用self的hideHUD方法[NSTimer scheduledTimerWithTimeInterval:1.5 target:self selector:@selector(hideHUD) userInfo:nil repeats:NO];// repeats如果為YES,意味著每隔1.5s都會調用一次self的hidHUD方法
HUD
  •    - 其他說法:指標、遮蓋、蒙板
  •     - 半透明HUD的做法
  •     - 背景色設定為半透明顏色
 常見問題

- 項目裡面的某個.m檔案無法使用
    - 檢查:Build Phases -> Compile Sources
- 項目裡面的某個資源檔(比如plist、音頻等)無法使用
    - 檢查:Build Phases -> Copy Bundle Resources

模型 什麼是模型?  
  •   - 專門用來存放資料的對象
  •     - 一般都是一些直接繼承自NSObject的純對象
  •     - 內部會提供一些屬性來存放資料
一個控制項看不見有哪些可能?
  • - 寬度或者高度其實為0
  • - 位置不對(比如是個負數或者超大的數,已經超出螢幕)
  • - hidden == YES
  • - alpha <= 0.01
  • - 沒有設定背景色、沒有設定內容
  • - 可能是文字顏色和背景色一樣
九宮格計算思路
  • - 利用控制項的索引index計算出控制項所在的行號和列號
  • - 利用列號計算控制項的x值
  • - 利用行號計算控制項的y值

本文就分享到這裡了  感謝你的閱讀!

IOS開發UI基礎之Plis檔案-字典轉模型

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.