iOS7 AutoLayout 页面切换时,子视图闪动改变位置和大小

效果如下

并没有加任何动画的代码,几乎每次页面切换都会出现。而且同一个项目在iOS8上运行正常,只有在iOS7的运行时才出现(包括真机和模拟器)。
图片中所有视图都是XIB上创建并添加约束的,并没有警告、报错;试过取消勾选iOS8才有用的size Classes,并没有好转。

不知道是否有人遇到过类似问题有解决方法,或者可以提供一些测试和解决的思路,十分感谢!

阅读 5.7k
3 个回答

肯定是约束出问题了, 你最好打印出视图约束问题.

试一下在view上输出autolayout的信息:

    NSLog(@"%@", [self performSelector:@selector(_autolayoutTrace)]);

看看有没有AMBIGUOUS LAYOUT.

对于只有iOS7出现的AutoLayout问题,要严重怀疑是否是constraint to Margin的问题,iOS8以上默认会有一个constraint to Margin,在4.7inch屏幕为8px宽,但是iOS7并不支持。特别是手拖的autolayout变量,要特别注意,如果包含constraint to Margin的话,显示数值为10,但实际上到iOS7就为18px了。

要首先排除这个问题。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题