iOS之Settings Bundle

Goyakod發表於2019-01-22

下圖是在手機設定裡點選釘釘APP後的頁面:

IMG_0663.PNG
IMG_0664.PNG

以上,大家肯定再熟悉不過了,那麼它是如何實現的呢?沒錯,就是今天的主角:Settings.Bundle 。

#Settings.Bundle

Settings.Bundle支援六種配置項分別是:Title,MultiValue,Group,Slider,ToggleSwitch,TextField

##Title

Title.png

Type:配置型別,預設是Title
Title:配置項顯示的Title
Identifier: 配置項的識別符號,用來獲取配置項的配置內容
Default Value :配置項預設值

##MultiValue

MultiValue.png

Type:配置型別,預設Multi Value
Title:配置項顯示的標題
Identifier:配置項識別符號,用來獲取配置項的配置內容
Default:配置項預設值
Titles:顯示的標題陣列
Values:顯示的值陣列,與Titles一一對應

##Group

Group.png

Type,Title 同上;

##TextField

TextField.png

Text Field Is Secure:是否密文顯示
KeyBoard Type:鍵盤型別
Autocapitalization Stylele:自動大寫
Autocorrection Style:自動糾正拼寫

##ToggleSwitch

ToggleSwitch.png

##Slider

Slider.png

Minimum Value:最小值
Maximun Value:最大值
Min Value Image Filename:最小值端圖片
Max Value Image Filename:最大值端圖片

#如何設定

1.New File ->Settings.Bundle

AddSettingBundle.png

在右側的目錄會看到:

rootPlist.png

在Root.plist裡面新增上面說的配置專案:

plist.png

配置好後,執行專案,然後在設定中點選app,效果如下:

效果圖1.png
效果圖2.png

#程式中獲取配置資訊
獲取配置資訊其實很簡單,直接上程式碼:

//獲取SettingsBundle資訊
    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
    
    NSLog(@"%@",[userDefaults objectForKey:@"title_perference"]);
    NSLog(@"%@",[userDefaults objectForKey:@"sex_perference"]);
    NSLog(@"%@",[userDefaults objectForKey:@"name_preference"]);
    NSLog(@"%@",[userDefaults objectForKey:@"enabled_preference"]);
    NSLog(@"%@",[userDefaults objectForKey:@"slider_preference"]);
複製程式碼

這裡有一點需要說明:
如果執行應用後直接直接通過上面的程式碼獲取資訊,你會得到null;原因是:
root.plist實際上只是一個靜態檔案用來在設定裡顯示;只有當你對它進行修改,它才會往NSUserDefaults裡新增。修改配置後,NSUserDefaults的優先順序高於root.plist檔案。

#最後

在企業級應用中,後臺訪問地址需要使用者自行配置的時候,SettingsBundle確實很好用。

Demo_Git地址

相關文章