相关疑难解决方法(0)

呈现视图控制器后自动布局无效(和许多情况)

背景:

我有一个自定义的容器控制器,就像UITabBarController,但有切换动画.我使用自动布局来实现.
因为子控制器之间的切换是动态的,所以当将其视图添加到容器的视图中时,将适当的约束添加到子视图控制器,而不是在IB中预先设置.(当然,约束被添加到超级视图中)

http://d.pr/i/q6NF容器控制器笔尖设置

PS:约束的细节
H:| [Child](将约束的常数从左/右改为左/右)
H:[Child(== Super)]
V:| [Child] |

问题出在哪儿:

其中一个子控制器是导航控制器,导航控制器出现模态视图控制器(使用presentViewController:animated:completion:)时出现问题,并解除它(使用dismissViewControllerAnimated:completion:),当前/解除导航控制器的框架变为(x,y,0, 0),似乎自动布局变得无效,可能已删除约束.

http://d.pr/i/VmvL现在/解雇程序

研究

我还没有使用代码来验证这些约束发生了什么,但是使用Spark Inspector,我看到在当前/解除过程中视图表示发生了变化.当我的导航控制器呈现模态视图控制器时,iOS只是将整个导航控制器的视图交换到模态视图控制器的视图.当导航控制器的视图返回时,自动布局不再起作用.

可能解决方案

我想出的解决方案之一是让我的容器控制器提供模态控制器.

或者我只是将容器控制器更改为无自动布局.

事实上,自从我开始使用自动布局以来,这种技术带来的问题只会占据优势.除了这个问题,每次界面方向改变时,我的容器控制器内的视图都无法自动布局,似乎子视图在方向改变之前总是使用超视图的框架.我仔细检查我设置的约束,没有冲突,没有歧义.

我的猜测是我的自定义容器控制器与自动布局系统中的模态视图控制器和界面方向更改不兼容,即使设置了约束.

Xcode环境

Xcode 5 beta,iOS 7SDK,目标iOS6.1也许SDK环境不对劲

modalviewcontroller ios autolayout ios7

31
推荐指数
4
解决办法
2万
查看次数

标签 统计

autolayout ×1

ios ×1

ios7 ×1

modalviewcontroller ×1