更改UINavigationController时的UINavigationBar高度

时间:2014-03-03 12:28:45

标签: ios objective-c ios7 uinavigationcontroller uinavigationbar

需要帮助。

我有一些自定义视图控制器,其菜单就像在Facebook应用程序中一样。 当然,这个控制器使用子控制器进行操作,子控制器提供视图以将它们添加到“带菜单的控制器的根视图”。

出于某些设计原因,当菜单滑动时,中央视图具有缩放功能。 所以,问题是:当从navigationController中央视图初始化好了。 当我将控制器更改为另一个导航控制器或相同时,导航栏的高度变化。见快照。

我该如何防止这种行为?任何想法?

感谢。 P.S。:对不起我的英语。

初步观点:

enter image description here

然后是某种菜单幻灯片:

enter image description here

然后我更改导航控制器([storyboard instantiateViewControllerWithIdentifier:@“identifier”]);

enter image description here

然后向后滑动,但导航栏的大小没有考虑状态栏...

enter image description here

此方法负责更改中心视图控制器:

- (void)setCenterViewController:(UIViewController *)centerViewController{
if([centerViewController isEqual:self.centerViewController])
    return;

CGRect previousFrame = CGRectZero;
CGFloat previousScale = 0.f;
if(_centerViewController)
{
    [_centerViewController removeFromParentViewController];
    _centerViewController.trippleController = nil;
    [_centerViewContainer removeFromSuperview];
    previousFrame = _centerViewController.view.frame;
    previousScale = _centerViewController.view.transform.a;
}

[centerViewController removeFromParentViewController];
_centerViewController = centerViewController;
[self addChildViewController:_centerViewController];
_centerViewController.trippleController = self;

self.centerViewContainer = _centerViewController.view;
self.centerViewContainer.clipsToBounds = YES;

if(!CGRectEqualToRect(previousFrame, CGRectZero))
{
    self.centerViewContainer.transform = GAffineTransformMakeScale(previousScale, previousScale);
    self.centerViewContainer.frame = previousFrame;
}

[self.view insertSubview:self.centerViewContainer atIndex:0];}

1 个答案:

答案 0 :(得分:0)

所以,如果有人感兴趣,经过一段时间的实验,我只是换行 英寸

dispatch_async(dispatch_get_main_queue(), ^{
    self.centerViewContainer.transform = GAffineTransformMakeScale(previousScale, previousScale);
    self.centerViewContainer.frame = previousFrame;
})` 

并且导航栏停止改变他的身高。