iOS開發--應用設置及用戶默認設置【一、bundle的運用】

 

       在iphone裏面,應用都會在「設置」裏面有個專屬的應用設置,選擇該菜單界面,用戶即可以在其中輸入和更改各類選項,協助用戶更便捷設置我的喜愛與習慣。html

在這一節中,但願能經過對捆綁包(bundle)的介紹以及plist文件等的運用,探討用戶默認機制中,應用設置的開發與調用。api

【本次開發環境: Xcode:7.2     iOS Simulator:iphone6S plus   By:啊左】    數組

 

1、設置捆綁包(bundle)介紹與界面展現瀏覽器

       設置捆綁包(bundle)是應用自帶的一組文件,用戶能夠經過它進行輸入與更改應用的偏好設置。例如【圖1】,最底下就是開發的命名爲:「應用設置」的app應用。app

  

【圖1   設置應用界面】iphone

     

         設置應用充當着iOS用戶默認設置(User Ddefault)機制的通用用戶界面的角色。用戶默認設置是保存和獲取偏好設置的系統的一部分。在iOS應用中,用戶默認設置由NSUserDefaults類實現(一樣,在mac中,也是經過這個類來保存和讀取偏好設置的)。編輯器

 

NSUserDefaults與NSDictinary?工具

        應用經過NSUserDefaults用鍵值對的方式來讀取和保存偏好設置數據,與經過鍵從NSDictionary對象中獲取數據同樣,不一樣之處在於NSUserDefaults中的數據會被持久保存到文件系統中,而不是存儲到內存中的對象實例中。測試

      本節將經過開發一個應用,添加並配置一個bundle包。  而後從應用訪問而且編輯這些偏好設置,以及從系統偏好設置中編輯,使app控件數據發生變化。加密

在這個過程,進行數據同步與更新。

設置界面【圖2】以下:

   

              

【圖2  應用設置界面 】(此app名稱就叫「應用設置」。。 其中,More爲最後一個選項的子視圖)

 

app 應用的界面【圖3】以下:

              

圖3 app應用界面】

 

因此,就開始建立項目吧~~

 

2、建立boundle包

一、首先經過建立一個叫「應用設置」的項目,記得將Devices勾選爲iphone或是universal,取消勾選Use CoreData。

二、建立bundle捆綁包:

點擊「應用設置」文件夾,而後從左上角選擇File->New->File,選擇iOS部分中的Resource,選擇設置Bundle圖標(參見圖4 )點擊Next,名字保留默認的Settings,點擊Create。

【圖4  建立bundle包】

此時能夠看到這樣的一個「Setting.bundle」捆綁包,展開.bundle設置,能看到"en.Iproj"這個文件夾,主要用與本地化應用,本文不討論本地化應用這個內容,主要介紹Root.plist。

三、設置屬性列表

點擊Root.plist,查看編輯器窗口,能夠看到Xcode的屬性列表編輯器(參見圖5),

【圖5 屬性列表   上面  Key:鍵    Type:類型    Value:值】

 若是你的編輯窗口與圖看起來不同,右鍵空白處,在彈出的菜單中選擇:"Show Raw Keys/Values"。以下圖:
【注意:本文討論的屬性列表plist文件中的圖片,都是以"Show Raw Keys/Values"

 

【圖6 Show Raw Keys/Values】    

 

 

    查看plist中各項組織結構。屬性列表本質上就是字典。在存儲的各個條目的類型與值,都要經過特定的鍵key來檢索他們,這種使用方法與NSDictionary Boolean、Data、Date、Number、String能夠保存數據;另外,除了Dictionary也能夠作爲保存字典的節點外,還有Array節點,也是能夠儲存含有其餘節點的有序列表。其中,其中Dictionary和Array是惟一可以包含其餘節點的屬性列表節點類型

(注:雖然平時用的NSDictionary可使用大多數對象作爲鍵,但屬性列表中的Dictionary節點中鍵必須爲字符串類型的,可是能夠選擇任意節點類型作爲該鍵的值。)

 

下面介紹Root.plist中各項的設置與編輯

其中能夠看到StringsTable這個條目,用於將應用轉換爲另外一種語言,本文不會使用到它,可是也能夠留着,雖然沒有多大用。。

 除了StringsTable,屬性列表還有一個名爲「PreferenceSpecifiers」的節點,是一個數組,這個數組節點保存的一組Dictionary節點,每一個Dictionary節點都表明着用戶可修改的一個偏好設置項或用戶能夠訪問的一個設置頁面的子視圖。

 

你會注意到這個屬性列表模板中,有4個Item節點,在本應用中沒有實際做用,因此分別點擊Item1到3,按delet依次刪除它們,只留下Item0。

(技巧:要在屬性列表中選擇一項,最好是單擊Key列的一端或者另外一端,不然容易打開Key列的下拉菜單。)

        點擊Item0左邊的三角形展開, 能夠看到2行數據。 其中Type鍵的值PSGroupSpecifier說明該條目是一個新分組的開始,緊跟其後的每一個條目都會是此分組的一部分,直到有個新的Type鍵的值爲PSGroupSpecifier纔開始另外一個分組。所以在PSGroupSpecifier中的Item0在屬性列表中必須始終爲PSGroupSpecifier類型,這樣確保每一個設置列表中都會至少有一個分組存在。

          Item0中的Title,用與設置這個組上的標題。後面咱們能夠在系統設置上面看到。

仔細觀察Item0(Group - Group)中,第一個Group表明Type項的值,第二個Group表明Titile項的值。這是Xcode有助於只管觀察捆綁包內容的便捷方式。

咱們將Item0中的Title將它從Group改成Group Info。

下面咱們在設置中添加一個讓用戶輸入帳號和密碼的2個文本框。

首先點擊Item0左邊展開的三角形,使它關閉,而後選擇Item0按下return鍵。

此時添加了一個新的與Item0的同級行,出現一個下拉菜單【圖7】,顯示默認值TextField。選擇TextField,讓菜單消失。

【圖7 】

展開Item1,能夠看到如【圖8】,把它的標題Title鍵的值改成zhanghao(用於顯示在設置中),Key鍵的值改成ZH(作爲咱們獲取和編輯這個文本框的鍵,工做方式與Dictionary類似)

 

【圖8】

在Item的最後一行,也就是Key這行,按下return鍵添加一個新行,將其鍵設置爲AutocapitalizationType,而且點擊這一行最右邊的,選擇Words(表示文本框用戶輸入本文本框時,自動將每一個單詞改爲首字母大寫),也能夠本身輸入。

同理,添加AutocorrectionType選擇No(表示不會自動更正輸入到該文本框中的值),也能夠本身輸入。

(記住標題是用來顯示在設置屏幕上面的;鍵是用來存儲值的;)

 

【圖9】

     接下來添加密碼這一文本框欄,能夠經過添加Item1的方法,添加Item2條目,每一行的條目數據如【圖10】,其中IsSecure爲Boolean,表示此文本框是隱藏用戶輸入文字的密碼框。(固然,Item2的建立也能夠經過點擊Item1,按Command+C,再按Command+V,複製出相同的新條目Item2,而後展開Item2修改其中的值,再增長IsSecure項。)

【圖10】

 

 

四、添加應用的圖標,運行看系統設置中的變化。

點擊文件夾中的Assets.xcassets。在點擊裏面的AppIcon項,以下【圖11】,能夠看到從左到右三類圖標的設置。   

第一個用來在iphone的主屏幕上顯示你的應用;第二個會在iphone上使用Spolight搜索到應用時出現;第三個則顯示在「設置」應用中;

若是須要本身處理圖片,能夠點擊須要設置的方框,如圖11,Siz爲60x60,可是它的要求是2x的,所以須要圖片大小爲120x120的。
(能夠用mac自帶的圖片瀏覽器處理:雙擊打開待處理的圖片,點擊屏幕上方:工具->調整大小,在填進120x120時,記得選擇的單位是像素!)

【圖11】

此時咱們只須要設置系統中應用「設置」的圖標便可。按Command+R運行項目~~~

這時候,模擬器打開的是一個空白的項目,不急。咱們先點擊模擬器而後按 Command+Shift+H,返回模擬器的屏幕主頁,在界面上面找到與手機裏面同樣的應用設置:,這時候,咱們拉到最下面,能夠看到多出了這一行,點擊以下圖,能夠咱們建立的帳號和密碼文本框輸入:

【圖12】

這就是以上經過bundle包進行設置的方法展現。

 

下面咱們繼續添加幾項。

Item3:多值字段

摺疊Item2以後點擊,按下return鍵添加Item3,在Key這一列彈出的菜單中選擇MultiValue,單擊左邊三角形展開Item3,用以前編輯列表的方法,編輯增長如下6行條目,使其以下圖內容一致。

【圖13】

其中,Ttiles數組,用於保存可供用戶選擇的一組值;

         Values數組,用於保存用戶默認設置中存儲的一組值;

Ttiles與Values中的每一項都是對應的,所以,若是用戶選擇第一項,設置應用實際保存的是Values數組的第一個值,但用戶看到的是Titles的第一項。所以這種Ttiles/Values對方便爲用戶提供易於理解選擇。建立Item3時,最下面的「Default Value」行爲Xcode自動添加的,表明默認值,將其值設爲第一個的Ensign便可。

這就是多值字段的建立。

Item4:開關設置

用閉合Item3,按下return鍵,建立Item4,在彈出的菜單選擇:「Toggle Switch」,設置爲如下內容

【圖14】

接下來添加滑動條:

按照以上方法,分別建立Item5和Item6:如【圖15】

Item5表示設置另一個分組,且標題爲「Warp Factor」。

Item6中,下面值分別表明,

Minimum Value:最小值;                               Maximum Value:最大值;

Min Value Image Filename:滑塊最左端圖標;    Max Value Image Filename:滑塊最右端圖標;

(注意:滑塊2個圖標文件 tag_remove_24 和 tag_add_24 不能只放在主文件夾中,而是須要放在Settings捆綁包中,纔可以經過 Min/Max Value Image Filename 設置使用。)

【圖15  Item五、Item6的設置】

此時能夠運行看看效果。

 

【圖16 添加Item四、五、6以後】

有時候,咱們須要在主設置視圖中添加子視圖。例如說,當咱們但願滑塊與帳號密碼的設置不在同一個視圖界面,而是經過進入另外一個子視圖設置。

咱們能夠向捆綁包添加2個新的Item以下:

【圖17】(Item7表示添加一個新的分組,能夠點擊複製Item0而後粘貼添加新的分組Item7,Item8表子視圖,其中Filename對應的More表示子視圖由「More.plist」加載。)

接下來,咱們須要新增一個名爲「More.plist」屬性文件,能夠先添加放在主文件裏。

【圖18 添加plist文件】

而後點擊「Root.plist」中的Preference Items項,而後複製到More.plist屬性列表上面,刪除除了Item5和Itme6外其餘項,如圖:

【圖19 編輯More.plist屬性列表】

須要注意的是,Xcode中不容許直接向設置捆綁包添加新文件,所以須要經過右鍵"Setting.bundle"選擇「show in Finder」打開窗口,而後把More.plist文件拖拽進去。

如今咱們之後完成設置捆綁包的基本相關操做了。效果如【圖20】,咱們能夠編譯,運行測試項目應用的系統設置。也能夠本身動手試試更改屬性列表中的其餘項。

下一節咱們將探討如何讀取應用中的設置

          

【圖20 效果圖】

相關文章
相關標籤/搜索