【发布时间】:2015-07-01 17:58:50
【问题描述】:
对于我目前正在开发的 iOS 应用,我需要根据运行该应用的设备类型来管理屏幕上显示的控件。
我将尝试用一个理论例子来解释(下面使用的实际数字并不重要,我感兴趣的是达到预期结果的最佳方法)。
例子:
对于屏幕截图中的应用程序,与 UIImageView 重叠的按钮根本不应该显示或显示在屏幕上的其他位置。
到目前为止,我一直在使用自动布局,但是,据我所知,没有办法对 xcode 说类似的内容:嘿,对于班级大小“紧凑宽度/紧凑高度”,我希望你隐藏这些按钮...但将它们显示为“常规宽度/紧凑高度”。
我也做了一些谷歌搜索,看到一些人谈论使用基于设备的不同故事板;我也在想,我可以根据设备类型动态添加/删除按钮,但我认为必须手动添加所有约束(即以编程方式)并不是那么愉快。
所以要恢复,我会很感激提出“最佳”方法的建议,最好的意思是“不那么难”+“不那么长”的组合。此外,一些代码示例(或链接)将不胜感激。
提前谢谢大家!
【问题讨论】:
-
如果按钮要与图像视图重叠,为什么不直接缩小按钮?
-
这是一个想法,但如果我有超过 1 个按钮重叠,我认为它不会很好。也许我没有通过希望按钮具有固定大小来使用最佳实践。
-
你可以对 Xcode 说
hey, for a class size "Compact Width / Compact Height" , I want you to hide these buttons...but show them for "Regular Width / Compact Height"。在 Size Class 中,您可以使用 Attributes Inspector 中的installed复选框选择是否显示界面对象。这是你想要的?我是否误解了您的要求? -
你说得对,我完全没有注意到 Installed 复选框附近的小“+”号。但是在测试您的答案时,我意识到实际上“最小”尺寸类别包括 3 个屏幕尺寸,但这仍然不能完全解决我的问题。但是不要误会我的意思,你的回答非常有帮助(至少对我来说)——如果我不想以编程方式处理自动布局,最后我可能会坚持使用这个和其他东西的组合。
-
如果你需要我的建议(你可能不需要),我会尽量坚持使用大小类和自动布局。如果需要更多定制,则使用代码调整对象和约束。一旦您为每台设备使用一个 Storyboard 并尝试区分设备屏幕的物理尺寸,您就在与框架作斗争,并为维护该代码打开了一个痛苦的世界。
标签: ios autolayout xcode-storyboard