ios7 忽略任何大小类

Posted

技术标签:

【中文标题】ios7 忽略任何大小类【英文标题】:Any-Any size class ignored for ios7 【发布时间】:2014-12-11 14:05:39 【问题描述】:

我正在为 ios7 和 8 iPhone 进行开发。 由于 iOS7 不支持紧凑高度尺寸类,我认为解决此问题的共识方法是对横向 iPhone 布局使用任意尺寸类, 并为纵向 iPhone 布局使用纵向紧凑宽度常规高度 (cWrH) 尺寸类。

我在 any-any 中对视图设置了约束,然后修改 cWrH 中的约束常量以特定于该大小类。但是,iOS7 设备以及 Xcode 预览忽略了 any-any 约束,并且对纵向和横向方向都使用 cWrH 约束。

我不知道为什么会这样。我要做的就是根据方向设置不同的约束。

这可以使用最新的 Xcode 6.0.1 轻松复制。

半相关:How can Xcode 6 adaptive UIs be backwards-compatible with iOS 7 and iOS 6?

以下截图:

【问题讨论】:

"在 iOS 8 及更高版本中,您使用 size classes 和 Auto Layout 通过定义屏幕布局、视图控制器和视图应如何适应显示环境变化来帮助您满足这一期望" @ 987654322@ 我遇到了同样的问题,我目前使用的是 xcode 6.1.1。我认为我们必须接受大小类根本不向后兼容 iOS 7,尽管有任何声明。 【参考方案1】:

根据您的问题,您所做的是在 Any-Any Size Class 中给出了前导、顶部、高度和宽度限制。

所以现在它的位置对于任何横向和纵向的设备都是固定的。 现在,当您将尺寸等级更改为紧凑宽度并更改顶部约束时,它将同时影响纵向和横向。

您需要使用带有 Any-Any 的 size 类来将您的控件放置在视图控制器中并设置您希望在纵向和横向中保留的那些约束。

例如:如果您想保持高度和宽度固定,请在 Any-Any Size Class 中给出这些约束。

在 Any-Any Size Class 中设置约束将使纵向和横向的约束保持相似。

1.) 在纵向中设置前导和顶部约束,您可以使用 width- Compact, height-Regular

2.) 在横向设置前导和顶部约束,您可以使用 width- Any,height-Compact

访问下面的链接有很好的解释,您与使用尺寸类的自动布局相关的大部分问题都将得到解决:

http://mathewsanders.com/designing-adaptive-layouts-for-iphone-6-plus/

希望这能解决你的问题。

【讨论】:

这个问题专门针对 iOS7 的支持。遗憾的是,iOS7 完全忽略了 height=Compact 的任何尺寸类,因此选项 #2 不适用于此目标。

以上是关于ios7 忽略任何大小类的主要内容,如果未能解决你的问题,请参考以下文章

iOS7 忽略 UIImageView 的 backgroundColor?

为啥 LaTeX 会忽略文档类中的字体大小 [关闭]

UIView 和 AutoresizingMask 被忽略

UITableView 中 UILabel 的大小类随机忽略

UITableViewController 在iOS7中删除行后忽略点击

自动布局忽略iOS7上的UITabBar(栏下的内容)