需求说明:点击导航栏左边的按钮时,从左侧显示半屏(自定义宽度)视图,场景为常见的个人中心等
思路选择:可以选择自定义一个视图,设置长度为(kScreenWidth - 任意数值),点击的时候将视图添加到UIWindow上
问题分析:一般个人中心视图为tableView等视图时,肯定需要有跳转操作,一种想法是使用代理传递点击事件,但是有headerView和footerView的时候,可能会新增一些按钮,就需要多个代理传值,比较繁琐;方法二是创建一个静态方法,并且将控制器的UINavigationController传入,这样就可以在自定义视图内进行push操作,不过这样也会造成视图类中包含了逻辑代码,耦合度会高一些.下面是方法二的实现方式:
在自定义的视图内实现:
+ (void)showUserCenterViewWithNavigationController:(UINavigationController *)navigationController {
KJSkin_UserCenterView *userCenterView = [KJSkin_UserCenterView newAutoLayoutView];
userCenterView.navigationController = navigationController;
[[[UIApplication sharedApplication] keyWindow] addSubview:userCenterView];
userCenterView.frame = [[UIApplication sharedApplication] keyWindow].bounds;
}
也可以使用 UIView animateWithDuration:实现动画效果展示view