推动视图控制器在iOS 6中将视图向上移动20个像素?

时间:2014-09-17 06:07:18

标签: ios iphone ios6 uinavigationcontroller

我有一个导航控制器,我将按以下方式在UIViewController上添加

UINavigationController * navController = [[UINavigationController alloc] initWithRootViewController:self.homeViewController];

_centerViewNavigaionController = navController;

if (bIsDeviceOSVersion7) {
    _centerViewNavigaionController.view.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
}
else
{
 _centerViewNavigaionController.view.frame = CGRectMake(0, -20, self.view.frame.size.width, self.view.frame.size.height+20);
}

[self.view addSubview:navController.view];
[self addChildViewController:navController];

它在iOS 7中运行良好,但在iOS6中 - HomeViewController(即此导航控制器的RootViewController)加载正常。但是当我将一个新的View Controller推到HomeViewController上,即RootViewController时,新的视图框架只在第一时间向上移动了20个像素。下次推它时工作正常。我查看了堆栈溢出但无法解决此问题。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

而不是这样做

_centerViewNavigaionController.view.frame = CGRectMake(0,-20,self.view.frame.size.width,self.view.frame.size.height + 20);

您可以通过Interface Builder为viewcontroller对象下的直接视图/视图设置delta属性。否则你必须使用Autolayout来避免这种情况。