iOS 之 Settings.Bundle

iOS 系统进入设置中,大部分 App 只显示一些常规权限设置相关的选项,而有些则显示了一些自定义的内容。比如下面的 “” 设置页,除一些常规权限相关的选项,还包含 “首选语言”、“INFO” 中的版本信息。如何添加自定义的选项呢?答案就是 Settings.Bundle

iOS 之 Settings.Bundle_第1张图片

Settings.Bundle 是 App 的配置项,可以在外围对于 App 的部分信息进行修改,是 App 运行环境变的可配置。

如何添加设置

选中工程,右键 New File -> Resource -> Setting Bundle

详细说明

Settings.Bundle 支持六种配置项分别是:

  • Title
  • MultiValue
  • Group
  • Slider
  • ToggleSwitch
  • TextField
Title
iOS 之 Settings.Bundle_第2张图片

Type:配置类型,默认是Title
Title:配置项显示的Title
Identifier:配置项的标识符,用来获取配置项的配置内容
Default Value:配置项默认值

Multi Value
iOS 之 Settings.Bundle_第3张图片

Type:配置类型,默认Multi Value
Title:配置项显示的标题
Identifier:配置项标识符,用来获取配置项的配置内容
Default:配置项默认值
Titles:显示的标题数组
Values:显示的值数组,与Titles一一对应

Group

TypeTitle 同上;

TextField
iOS 之 Settings.Bundle_第4张图片

Text Field Is Secure:是否密文显示
KeyBoard Type:键盘类型
Autocapitalization Stylele:自动大写
Autocorrection Style:自动纠正拼写

ToggleSwitch
iOS 之 Settings.Bundle_第5张图片
Slider
iOS 之 Settings.Bundle_第6张图片

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

程序中获取配置信息

// 获取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 文件。

参考

  • iOS之Settings.Bundle

  • App Settings.Bundle 花式用法

  • Adding a settings bundle to an iPhone App

  • Application Settings Bundle Part – I

  • Application Settings Bundle Part – II

你可能感兴趣的:(iOS 之 Settings.Bundle)