如何管理适用于iOS 7和iOS 6.0的自动布局约束

5
我在xCode 5中创建了一个新的iOS项目,部署目标为6.0,并应用“底部空间到父视图”的“Pin”约束,以使AutoLayout适用于iOS 7和不同的iOS 6.0设备。但是,当我选择选项“View as :”:“iOS 7.0及更高版本”时,按钮看起来如下所示: enter image description here 然后,当我将选项“View as :”更改为“iOS 6.0及更早版本”时,按钮看起来如下所示: enter image description here 我该如何管理约束,使其适用于iOS 6.0和iOS 7.0?
提前感谢您的帮助!

1
按钮的完整约束集是什么? - Wain
我已经在我的问题中提到了,我使用的约束是仅限于 Pin [底部与父视图的空间] 约束,除此之外没有任何其他约束。 - imDeveloper
2个回答

6
我在我的故事板中遇到了类似的问题,我进行了大量搜索并最终通过以下方式删除了所有约束:
编辑器 -> 解决自动布局问题 -> 清除视图控制器中的所有约束
然后重新排序,这解决了大部分问题。
首先来自苹果转换指南:
如果业务原因要求您继续支持iOS 6或更早版本,则需要选择更新应用程序的最实用方法以适用于iOS 7。您选择的技术可能不同,但总体建议保持不变:首先,专注于为iOS 7重新设计应用程序。然后,根据需要将更改引入iOS 6版本。
这意味着您可能会在之前的iOS版本中遇到一些问题,特别是在布局方面,您需要在iOS7下重新布置控件,然后在iOS6下测试它们。

是的,我注意到了这个问题。当我在xCode 5中创建了一个示例项目并在主视图上放置了一个UILabel对象后,我发现在iOS 7及更高版本和iOS 6及更早版本中,它们的位置是不同的。 - imDeveloper
@brij:那么你打算如何支持iOS6和iOS7? - Mrunal

0

我正在开发一款可以在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];

我在思考,在我的情况下,即使是透明的,我也可以在所有这些元素中放置一个背景图片,以保持相同的外观。

希望对您有所帮助。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接