引言:当在CenterControl侧滑进入侧边栏 第一次加载侧边栏高度不对 因为我的侧边栏是添加导航栏的 高度会有个先升后恢复到初始的事情 只有App启动是每一次的第一次点击按钮进行侧滑才会出现这个问题 但是当侧滑加上动画时就不出现这个问题
测试: iPhoneSE2代 第一次加载侧边栏高度为623 非第一次启动603(正常)
iPhone11 第一次加载侧边栏高度为852 非第一次启动808(正常)
解决方案以及侧滑代码
HomeViewController *home = [[HomeViewController alloc]init];
LeftMenuController *left = [[LeftMenuController alloc]init];
UINavigationController *centerNvaVC = [[UINavigationController alloc]initWithRootViewController:home];
UINavigationController *leftNavVC = [[UINavigationController alloc]initWithRootViewController:left];
self.drawerController = [[MMDrawerController alloc] initWithCenterViewController:centerNvaVC leftDrawerViewController:leftNavVC];
[self.drawerController setShowsShadow:NO];
//4、设置打开/关闭抽屉的手势
self.drawerController.openDrawerGestureModeMask = MMOpenDrawerGestureModeNone;
self.drawerController.closeDrawerGestureModeMask = MMCloseDrawerGestureModeNone;
//5、设置左右两边抽屉显示的多少
self.drawerController.maximumLeftDrawerWidth = KScreenW;
//我是在这里面解决问题的
[self.drawerController bouncePreviewForDrawerSide:(MMDrawerSideLeft) completion:nil];
[self.window setRootViewController:self.drawerController];
进入我上面写的方法 把645-660的动画代码屏蔽就好了 调用屏蔽代码上的两个方法应该也是可以的
未防止CSDN年久失修不显示图片 特地贴下代码
-(void)bouncePreviewForDrawerSide:(MMDrawerSide)drawerSide distance:(CGFloat)distance completion:(void(^)(BOOL finished))completion{
NSParameterAssert(drawerSide!=MMDrawerSideNone);
UIViewController * sideDrawerViewController = [self sideDrawerViewControllerForSide:drawerSide];
if(sideDrawerViewController == nil ||
self.openSide != MMDrawerSideNone){
if(completion){
completion(NO);
}
return;
}
else {
[self prepareToPresentDrawer:drawerSide animated:YES];
[self updateDrawerVisualStateForDrawerSide:drawerSide percentVisible:1.0];
// [CATransaction begin];
// [CATransaction
// setCompletionBlock:^{
// [sideDrawerViewController endAppearanceTransition];
// [sideDrawerViewController beginAppearanceTransition:NO animated:NO];
// [sideDrawerViewController endAppearanceTransition];
// if(completion){
// completion(YES);
// }
// }];
//
// CGFloat modifier = ((drawerSide == MMDrawerSideLeft)?1.0:-1.0);
// CAKeyframeAnimation *animation = bounceKeyFrameAnimationForDistanceOnView(distance*modifier,self.centerContainerView);
// [self.centerContainerView.layer addAnimation:animation forKey:@"bouncing"];
//
// [CATransaction commit];
}
}