5

我在 xCode 5 中创建了新的 iOS 项目,部署目标为 6.0 和 Apply Pin constraint [Bottom space to superview] 以使 AutoLayout 适用于 iOS 7 以及具有不同设备的 iOS 6.0,但

当我选择选项“查看为:”时:iOS 7.0 及更高版本按钮如下所示

在此处输入图像描述

然后当我更改选项“查看为:”:iOS 6.0 及更早版本时,按钮如下所示

在此处输入图像描述

我如何管理约束,使其同时适用于 iOS 6.0 和 iOS 7.0?

提前致谢 !!

4

2 回答 2

6

我的故事板中有一个类似的问题,我搜索了很多没有希望,最终通过以下方式消除了所有约束:

编辑器 -> 解决自动布局问题 -> 清除视图控制器中的所有约束

然后再次重新排序,这解决了我的大部分问题。

首先来自 Apple 过渡指南:

如果业务原因要求您继续支持 iOS 6 或更早版本,您需要选择最实用的方式来为 iOS 7 更新应用程序。您选择的技术可能不同,但总体建议保持不变:首先,专注于重新设计适用于 iOS 7 的应用程序。然后,根据需要将更改带到 iOS 6 版本。

这意味着您可能会在之前的 iOS 版本中遇到一些问题,尤其是在布局方面,您需要重新布局控件,iOS7然后在iOS6.

于 2013-09-13T14:11:08.167 回答
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];

我在想,在我的情况下,我可以将背景图像放入所有这些图像中,即使它是透明的,也可以保持相同的外观。

希望这会有所帮助。

于 2014-02-01T11:16:27.840 回答