前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >iOS自定义应用设置页面

iOS自定义应用设置页面

作者头像
珲少
发布2024-03-25 07:53:45
910
发布2024-03-25 07:53:45
举报
文章被收录于专栏:一“技”之长一“技”之长

iOS自定义应用设置页面

引言

我们知道,当安装了一个iOS应用程序后,在系统的设置中,就会为此应用生成一个单独的设置模块,可以在其中控制应用的网络权限、推送权限等系统设置项。除了系统功能的相关设置外,其实应用程序也有许多自身设置的需求,例如应用缓存数据的设置、应用主题的设置以及用户账户的设置等。通常,应用自身的设置会由开发者自行开发,在应用内提供页面来承载,这使得应用的设置被割裂成了两部分。其实,iOS系统的设置页面也提供了不同应用进行定制的能力,例如系统的Safari浏览器应用,其设置页面如下:

本篇文章将讨论应用自定义系统设置页面的技术细节,某些场景下,将应用设置项合并入系统设置可以提供给用户更一致的使用体验。

从一个小示例开始

应用本身设置项的配置需要定义在一个plist文件中。在项目中可以直接新建一个Settings Bundle文件,如下:

生成的Bundle中包含一个国际化文件和一个Root.plist文件,国际化的文件我们暂不关心,其用来根据用户本地的语言环境来映射不同语言的字符串。Root.plist文件是配置设置项的核心文件。其内容如下:

模版中默认定义了4个item,分别用来显示一个分组头、输入框、开关和滑块组件。效果如下:

每个配置项的意义和用法,我们后续在详细介绍。可以看到,通过Plist文件的配置,我们可以在设置页面中添加许多可用户交互的组件。要读取用户设置情况也非常简单,只需要读取此Bundle文件中的Root.plist文件即可,例如:

代码语言:javascript
复制
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“

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2024-03-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • iOS自定义应用设置页面
    • 引言
      • 从一个小示例开始
        • Plist文件配置项详解
          • Root.plist文件最外层可配置键
          • PSGroupSpecifier
          • PSChildPaneSpecifier
          • PSRadioGroupSpecifier
          • PSMultiValueSpecifier
          • PSTextFieldSpecifier
          • PSTitleValueSpecifier
          • PSSliderSpecifier
          • PSToggleSwitchSpecifier
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档