如何管理适用于 iOS 7 和 iOS 6.0 的自动布局约束
Posted
技术标签:
【中文标题】如何管理适用于 iOS 7 和 iOS 6.0 的自动布局约束【英文标题】:How to manage Autolayout constraints which can be applicable for iOS 7 & iOS 6.0 both 【发布时间】:2013-09-13 12:38:46 【问题描述】:我在 xCode 5 中创建了新的 ios 项目,部署目标为 6.0 并应用引脚约束 [Bottom space to superview] 以使 AutoLayout 适用于 iOS 7 以及具有不同设备的 iOS 6.0,但
当我选择选项“查看为:”时:iOS 7.0 及更高版本按钮如下所示
然后当我更改选项“查看为:”:iOS 6.0 及更早版本时,按钮如下所示
我如何管理这样的约束,使其同时适用于 iOS 6.0 和 iOS 7.0?
提前致谢!!
【问题讨论】:
按钮上的全套约束是什么? 我已经在我的问题中提到了这一点,我正在使用的约束是 Pin [Bottom space to superview] 约束,除此之外没有任何其他约束。 【参考方案1】:我在故事板上遇到了类似的问题,我搜索了很多都没有希望,最后通过以下方式删除了所有约束:
编辑器 -> 解决自动布局问题 -> 清除视图控制器中的所有约束
然后再次重新排序,这解决了我的大部分问题。
首先来自 Apple 过渡指南:
如果业务原因需要您继续支持 iOS 6 或 之前,您需要选择最实用的方式来更新应用程序 对于 iOS 7。您选择的技术可能会有所不同,但总体而言 建议保持不变:首先,专注于为 iOS 重新设计应用程序 7. 然后,根据需要将更改带到 iOS 6 版本。
这意味着您可能会在之前的 iOS 版本中遇到一些问题,尤其是在布局方面,您需要在 iOS7
下重新布局控件,然后在 iOS6
下测试它们。
【讨论】:
是的,我在 xCode 5 中创建了一个示例项目然后在主视图上放置了一个 UILabel 对象时观察到了这个东西,之后我在 iOS 7 和更高版本以及 iOS 6 &之前我得到的职位在这两种情况下都不同。 @brij:那你是如何支持iOS6和iOS7的呢?【参考方案2】:我正在开发一个在 iOS 6 和 iOS 7 上运行的应用程序。我的一些按钮在 iOS 6 和 iOS 7 上看起来相同,而一些在 iOS 6 上看起来垂直更小,但在 iOS 7 上正常。我看起来,不同之处似乎是在保持其大小的按钮上,我使用的是这样的背景图像。
//...background button images are 33wx44h and 66wx88h. these correspond to the
// two name variations; <name>.png and <name>@2x.png. the former is used for
// standard resolution screens and the latter for retina screens.
// the UIEdgeInsetsMake is specifically set to 0, 16, 0, 16 (tp,lf,by,rt) so
// that we have no vertical stretching because Apple's preferred button size,
// vertically, is 44. horizontally, the button is 33w and we lock 16 from
// the left and 16 from the right to leave only a single vertical row of pixels
// to be stretched horozontally; which is the most efficient; processing wise.
UIEdgeInsets insets = UIEdgeInsetsMake( 00.0f,16.0f,00.0f,16.0f ); // tp,lf,bt,rt
UIIMage * btnImage = [[UIImage imageNamed: myImage ]
resizableImageWithCapInsets: insets];
[button setBackgroundImage: btnImage
forState: UIControlStateNormal];
我在想,在我的情况下,我可以将背景图像放入所有这些图像中,即使它是透明的,以保持相同的外观。
希望对您有所帮助。
【讨论】:
以上是关于如何管理适用于 iOS 7 和 iOS 6.0 的自动布局约束的主要内容,如果未能解决你的问题,请参考以下文章
Xcode 5 ios 7 中的自动布局。如何创建适用于 iphone 4 和 iphone 5 的应用程序
如何在适用于 ios 7 的科尔多瓦 3.9.2 中删除 index.html
带有自定义声音的 UILocalNotification 仅适用于 iOS 6.1 和 iOS 7.1,不适用于 iOS 7.0
如何在 iOS 中添加双拇指滑块?以及为啥这个双滑块库不再适用于 xcode 7