我在 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?
提前致谢 !!
我的故事板中有一个类似的问题,我搜索了很多没有希望,最终通过以下方式消除了所有约束:
编辑器 -> 解决自动布局问题 -> 清除视图控制器中的所有约束
然后再次重新排序,这解决了我的大部分问题。
首先来自 Apple 过渡指南:
如果业务原因要求您继续支持 iOS 6 或更早版本,您需要选择最实用的方式来为 iOS 7 更新应用程序。您选择的技术可能不同,但总体建议保持不变:首先,专注于重新设计适用于 iOS 7 的应用程序。然后,根据需要将更改带到 iOS 6 版本。
这意味着您可能会在之前的 iOS 版本中遇到一些问题,尤其是在布局方面,您需要重新布局控件,iOS7
然后在iOS6
.
我正在开发一个在 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];
我在想,在我的情况下,我可以将背景图像放入所有这些图像中,即使它是透明的,也可以保持相同的外观。
希望这会有所帮助。