需要帮助。
我有一些自定义视图控制器,其菜单就像在Facebook应用程序中一样。 当然,这个控制器使用子控制器进行操作,子控制器提供视图以将它们添加到“带菜单的控制器的根视图”。
出于某些设计原因,当菜单滑动时,中央视图具有缩放功能。 所以,问题是:当从navigationController中央视图初始化好了。 当我将控制器更改为另一个导航控制器或相同时,导航栏的高度变化。见快照。
我该如何防止这种行为?任何想法?
感谢。 P.S。:对不起我的英语。
初步观点:
然后是某种菜单幻灯片:
然后我更改导航控制器([storyboard instantiateViewControllerWithIdentifier:@“identifier”]);
然后向后滑动,但导航栏的大小没有考虑状态栏...
此方法负责更改中心视图控制器:
- (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];}
答案 0 :(得分:0)
所以,如果有人感兴趣,经过一段时间的实验,我只是换行 英寸
dispatch_async(dispatch_get_main_queue(), ^{
self.centerViewContainer.transform = GAffineTransformMakeScale(previousScale, previousScale);
self.centerViewContainer.frame = previousFrame;
})`
并且导航栏停止改变他的身高。