我正在开发一款通用iOS应用,其中包含一些对某些设备毫无意义的设置。具体来说,我想在纵向宽度低于阈值的设备上隐藏用户的某些设置。 (例如,某些设置不应在iPhone 7上提供,但应在iPhone 7 Plus上提供。)
我知道可以为iPhone和iPad设备设置不同的设置(如this thread中所述),但这不是我之后的意思。我也熟悉size-class-specific layouts,但这似乎不适用于设置。
是否可以根据应用运行设备的尺寸隐藏(或至少禁用)某些设置?
同样,设置的默认值是否可以根据显示尺寸而变化?
答案 0 :(得分:2)
抱歉,但这是不可能的。你是对的,你可以拥有不同的设置。适用于iPad和iPhone的捆绑。由于iOS 4设置plists可以取决于设备:Root~ipad.plist将用于iPad和iPhone上的Root~iphone.plist。如果不存在,将使用Root.plist。
因此,从我的观点来看,您可以使用此2设置提交实现目标的一部分。对于更具体的情况,您可以在启动应用时设置一些默认值。 Settings.bundle无法直接从代码修改,因此您无法删除或禁用特定设置,但您可以将其值更改为特定设备上的某个默认值。 Settings.bundle中的每个项目都与NSUserDefaults
中的键配对,因此您只需在NSUserDefaults
中设置值,设置应用程序就会自动反映这一点。不过,它会被保存在其他地方。您可以像使用设置包那样以相同的方式阅读它,也可以通过NSUserDefaults
。
您可以在此回答https://stackoverflow.com/a/32648047/5285151
中找到代码示例另一个有趣的选择是使用https://github.com/futuretap/InAppSettingsKit将本地设置界面添加到应用程序中。此内部设置与设备设置同步,但您可以更好地控制它。