iOS自定義應用設置頁面

iOS自定義應用設置頁面

引言

我們知道,當安裝了一個iOS應用程序後,在系統的設置中,就會爲此應用生成一個單獨的設置模塊,可以在其中控制應用的網絡權限、推送權限等系統設置項。除了系統功能的相關設置外,其實應用程序也有許多自身設置的需求,例如應用緩存數據的設置、應用主題的設置以及用戶賬戶的設置等。通常,應用自身的設置會由開發者自行開發,在應用內提供頁面來承載,這使得應用的設置被割裂成了兩部分。其實,iOS系統的設置頁面也提供了不同應用進行定製的能力,例如系統的Safari瀏覽器應用,其設置頁面如下:

本篇文章將討論應用自定義系統設置頁面的技術細節,某些場景下,將應用設置項合併入系統設置可以提供給用戶更一致的使用體驗。

從一個小示例開始

應用本身設置項的配置需要定義在一個plist文件中。在項目中可以直接新建一個Settings Bundle文件,如下:

生成的Bundle中包含一個國際化文件和一個Root.plist文件,國際化的文件我們暫不關心,其用來根據用戶本地的語言環境來映射不同語言的字符串。Root.plist文件是配置設置項的核心文件。其內容如下:

模版中默認定義了4個item,分別用來顯示一個分組頭、輸入框、開關和滑塊組件。效果如下:

每個配置項的意義和用法,我們後續在詳細介紹。可以看到,通過Plist文件的配置,我們可以在設置頁面中添加許多可用戶交互的組件。要讀取用戶設置情況也非常簡單,只需要讀取此Bundle文件中的Root.plist文件即可,例如:

let path = Bundle.main.path(forResource: "Settings", ofType: "bundle")
let settings = NSDictionary(contentsOfFile: path!.appending("/Root.plist"))

需要注意,Plist文件中的鍵與在Xcode中看到的鍵值並不一致,Xcode對鍵值進行了可讀化,你可以以文件的方式查看,即可看到真正的鍵名,例如上面的設置文件內容爲:

Plist文件配置項詳解

Root.plist文件最外層可配置鍵

- PreferenceSpecifiers

此鍵是必須的,設置爲一個數組,數組中每個具體的元素即是配置設置項的每一項。數組的順序會決定設置項的排序。

- StringsTable

設置用來進行語言本地化的文件名。

- ApplicationGroupContainerIdentifier

用來設置Group標識,用來在小組件等擴展中訪問此設置。

配置的核心是PreferenceSpecifiers,其配置的數組中的元素根據不同的type會渲染不同的組件,能支持的類型包括如下幾種:

1. PSTextFieldSpecifier:文本輸入框。

2.PSTitleValueSpecifier: 只讀的標題,只能用來顯示信息。

3.PSToggleSwitchSpecifier:開關。

3.PSSliderSpecifier:滑塊。

4.PSMultiValueSpecifier:多選列表,點擊後會跳轉到一個新的頁面,其中提供一組選項供選擇。

5.PSGroupSpecifier:分組,用來對選項進行分組,此處可以理解爲分組的分割線,能夠設置標題。

6.PSRadioGroupSpecifier: 此類型也用來設置選則列表,與PSMultiValueSpecifier不同的是其不會跳轉到新的頁面,而是直接在當前頁面展示列表。

7.PSChildPaneSpecifier: 此類型用來設置一個子頁面,其可以配置另一個Plist文件來展示子頁面的選項。

下面將逐一對這些類型進行介紹。

PSGroupSpecifier

用來渲染一個分組,可配置字段:

  • Title

設置分組標題。

  • FooterText

設置尾部文案。

- SupportedUserInterfaceIdioms

設置只在某些設備上顯示,例如”iPhone“

配置效果:

PSChildPaneSpecifier

  • Title

設置標題。

  • File

子設置頁面Plist文件名。

- SupportedUserInterfaceIdioms

設置只在某些設備上顯示,例如”iPhone“

PSRadioGroupSpecifier

直接展開的選擇列表。

  • Title

設置標題。

  • FooterText

設置尾部文案。

  • Key

唯一標識。

  • DefaultValue

默認的選中項。

  • Values

一組選項的值。

  • Titles

一組選項顯示的標題。

- DisplaySortedByTitle

布爾值,選項是否根據標題進行排序。

- SupportedUserInterfaceIdioms

設置只在某些設備上顯示,例如”iPhone“

配置效果:

PSMultiValueSpecifier

  • Title

設置標題。

  • Key

唯一標識。

  • DefaultValue

默認的選中項。

  • Values

一組選項的值。

  • Titles

一組選項顯示的標題。

- ShortTitles

配置一組短標題,設置後會顯示短標題,點擊後進入新的頁面展示長內容。

- DisplaySortedByTitle

布爾值,選項是否根據標題進行排序。

- SupportedUserInterfaceIdioms

設置只在某些設備上顯示,例如”iPhone“

PSTextFieldSpecifier

文本輸入框。

  • Title

設置標題。

  • Key

唯一標識。

  • DefaultValue

默認的值。

- IsSecure

是否加密。

- KeyboardType

彈出的鍵盤類型。

- AutocapitalizationType

自動大小寫模式。

- AutocorrectionType

自動拼寫糾正。

- SupportedUserInterfaceIdioms

設置只在某些設備上顯示,例如”iPhone“

PSTitleValueSpecifier

  • Title

設置標題。

  • Key

唯一標識。

  • DefaultValue

顯示的值。

  • Values

存儲在數據庫中的一組值。

  • Titles

存儲在數據庫中的一組key。

- SupportedUserInterfaceIdioms

設置只在某些設備上顯示,例如”iPhone“

PSSliderSpecifier

  • Key

唯一標識。

  • DefaultValue

默認值。

  • MinimumValue

滑塊的最小值。

  • MaximumValue

滑塊的最大值。

  • MinmumValueImage

最小值一側顯示的圖片。

  • MaximumValueImage

最大值一側顯示的圖片。

- SupportedUserInterfaceIdioms

設置只在某些設備上顯示,例如”iPhone“

PSToggleSwitchSpecifier

  • Title

設置標題。

  • Key

唯一標識。

  • DefaultValue

默認開關狀態。

  • TrueValue

開關開啓時綁定的值,不會顯示。

  • FalseValue

開關關閉時綁定的值,不會顯示。

- SupportedUserInterfaceIdioms

設置只在某些設備上顯示,例如”iPhone“

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