如何管理可适用于iOS 7及更高版本的Autolayout约束iOS 6.0都是

时间:2013-09-13 12:38:47

标签: ios ios6 ios7

我已经在xCode 5中创建了新的iOS项目,其部署目标为6.0,并且应用Pin限制[底层空间到superview],使AutoLayout适用于iOS 7以及iOS 6.0,具有不同的设备,但

当我选择“查看为:”选项时:iOS 7.0&后来的Button看起来像是

enter image description here

然后当我更改选项“View as:”时:iOS 6.0&之前按钮看起来像

enter image description here

如何管理constrait这样适用于iOS 6.0& iOS 7.0都是?

提前致谢!!

2 个答案:

答案 0 :(得分:6)

我的故事板上有类似的问题,我搜索了很多没有希望,最终删除了所有限制:

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

然后重新排序,这解决了我的大多数问题。

首先来自Apple Transition Guide:

  

如果商业原因要求您继续支持iOS 6或   之前,您需要选择最实用的方式来更新应用   对于iOS 7.您选择的技术可能会有所不同,但整体而言   建议保持不变:首先,重点关注重新设计iOS应用程序   7.然后,根据需要将更改带到iOS 6版本。

这意味着您可能会遇到以前iOS版本中的一些问题,尤其是布局问题,您需要在iOS7下重新布置控件,然后在iOS6下对其进行测试。

答案 1 :(得分: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];

我认为在我的情况下,我可以将背景图像放入其中,即使它是透明的,也可以保持相同的外观。

希望有所帮助。