iOS之Settings.Bundle

作者: 啃手高手 | 来源:发表于2016-04-11 23:11 被阅读3066次

    下图是在手机设置里点击钉钉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地址

    相关文章

      网友评论

      • 十一岁的加重:如果DEBUG里自动包含这个文件,RELEASE里不包含怎么处理啊
        Bryan_iOS:你好,请问知道如何处理了吗?
      • 863c73f31933:作者你好,这边问一下,要是app中添加了这个设置bundle之后,后期怎么动态让这个设置显示和隐藏
        863c73f31933:@Goyakod 我这边是了解到在编译的时候不包含就行,但是不晓得怎么做
        863c73f31933:能说详细些或者给个链接不?
        啃手高手:@SunlightInMyLif 直接修改userdefault就可以。
      • chad_it:您好,我想问一下钉钉前边的图片是如何实现的
        啃手高手:@不要把世界让给你鄙视的人 :smile::smile:共同进步
        chad_it:@Goyakod 做了个Demo 懂了 非常感谢
        啃手高手:@不要把世界让给你鄙视的人 那些设置图片跟apple系统是一样。第三方app是不能自己定义图片的,只有apple自己可以。

      本文标题:iOS之Settings.Bundle

      本文链接:https://www.haomeiwen.com/subject/ijbilttx.html