我的容器控制器的方向有问题。
当在控制器之间切换时,前一个控制器往往会在切换回时停留在它停止的任何方向。
首先,我用来重现的步骤:
self.child1 = [self.storyboard instantiateViewControllerWithIdentifier:@"first"];
self.child2 = [self.storyboard instantiateViewControllerWithIdentifier:@"second"];
[self addChildViewController:self.child1];
[self addChildViewController:self.child2];
[self.view addSubview:self.child1.view];
我如何转换子控制器:
- (IBAction)segmentChanged:(id)sender
{
UIViewController *toVc, *fromVc;
UISegmentedControl *segment = sender;
if (segment.selectedSegmentIndex == 0)
{
toVc = self.child1;
fromVc = self.child2;
}
else
{
toVc = self.child2;
fromVc = self.child1;
}
[toVc willMoveToParentViewController:self];
[self transitionFromViewController:fromVc
toViewController:toVc
duration:0.0
options:UIViewAnimationOptionTransitionNone
animations:nil
completion:^(BOOL finished){
[toVc didMoveToParentViewController:self];
}];
}
我假设transitionFromViewController将自动处理所有这些。有谁知道我做错了什么?
答案 0 :(得分:2)
快速解决方案是在调用transtionFromViewController函数之前添加以下行
toVc.view.frame = self.view.bounds;
这应该在新视图中正确设置框架
答案 1 :(得分:1)
我喜欢Omar Abdelhafith的回答。虽然它将设置框架,但它可能无法将视图旋转到所需的方向。你必须测试它。还可以做的是检查状态栏的方向。然后调用willRotateToOrientation方法发送状态栏的方向。我希望这也有帮助。