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

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

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

WeChatc3ec3d2c41d316d98b9d4c19b190c925.png


#!!!该方法废弃(视图会出现重叠)
//找到这个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

效果图
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在这里安个窝,以后坚持写点东西。内容不限,以工作中的一些总结和反思为主。当然, 也会写写其他的。
    一个游戏程序员的日常阅读 209评论 0 0
  • 喜欢有何用 不喜欢又有何用 或说万般皆是命 半点不由人 或说自强不息 任凭生活折腾 懒惰使人丑陋 不读书使人丑陋 ...
    梦里梦不出梦来阅读 187评论 0 2
  • 浅读得来终是浅,走马观花了无益。 好书理应百回读,熟读深思出真知。
    海上壹叶舟阅读 220评论 0 3
  • 感恩今天发生的一切!所有的一切都有他本身的意义!关键是你如何去面对他!今天看到的一段话:穷人去教育富翁说金钱乃身外...
    崔秋实鹏宇阅读 135评论 0 2