0
点赞
收藏
分享

微信扫一扫

【iOS开发】导航标签切换UIViewController(界面简单切换)

比较简单的一款导航切换。
当然其他大神的都很好,只是自己写可以随意改,被各种bug烦死了。
demo和使用方法在底部。

//代码解读 ///最开始是将标签按钮放在了navigationBar上,这样造成一个问题,标签切换页面不是一级,标签navigation返回时隐藏/remove标签不会跟随手指pop 页面隐藏,不太美观,所以解读层级关系图,返回按钮既然也在nav上,说明可以做到跟随隐藏


#!!!该方法废弃(视图会出现重叠)
//找到这个contentView添加标签view,完美解决跟随问题
//LSSTitleSliderViewController.m
-(void)addTopView{
        for (UIView *view in self.navigationController.navigationBar.subviews) {
            if ([NSStringFromClass([view class]) containsString:@"ContentView"]) {
                NSLog(@"%@",view);
                [view addSubview:self.navView];
            }
        }
//其他代码。略过看demo
}

###经过多次观察视图之后突然想起,既然返回按钮在push页面的时候可以做到跟随显示隐藏,那把标签放在左右barbuttonitem上不就好了。如果需要居中就放在titleView上,只是如果在二级页面需要返回按钮是,居中会偏移,这时加上rightbarbuttonitem占位就ok了。这样就不需要考虑视图出现消失,会重叠,不跟随navbar,此方法只适用于简单的导航栏标签切换。

### `如果各位大佬有更好的方法请告诉我,跪谢?`

        if (self.style == LSSTitleSliderStyleCenter) {
            UIButton * backBtn = [[UIButton alloc]initWithFrame:CGRectMake(0, 0, 40, 20)];
            [backBtn setTitle:@"返回" forState:UIControlStateNormal];
            [backBtn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
            UIBarButtonItem * item = [[UIBarButtonItem alloc]initWithCustomView:backBtn];
            self.navigationItem.leftBarButtonItem = item;
            self.navigationItem.titleView = self.navView;
            //占位,使titleview居中
            UIButton * rightBtn = [[UIButton alloc]initWithFrame:CGRectMake(0, 0, 40, 20)];
            [rightBtn setTitle:@"返回" forState:UIControlStateNormal];
            [rightBtn setTitleColor:[UIColor clearColor] forState:UIControlStateNormal];
            UIBarButtonItem * items = [[UIBarButtonItem alloc]initWithCustomView:rightBtn];
            self.navigationItem.rightBarButtonItem = items;

        }else{
            UIBarButtonItem * item = [[UIBarButtonItem alloc]initWithCustomView:self.navView];
            self.navigationItem.leftBarButtonItem = item;

        }

使用 参考DEMO

navigationbar不可以隐藏!!!!!

不需要侧滑可以不加


//使带有scrollview的页面拥有侧滑手势,否则会引起手势冲突 
[self.scrollView.panGestureRecognizer requireGestureRecognizerToFail:self.navigationController.interactivePopGestureRecognizer];

DEMO

举报

相关推荐

0 条评论