美文网首页
导航栏问题

导航栏问题

作者: wq04200 | 来源:发表于2016-10-22 10:18 被阅读37次

导航栏技术参考文章:http://tech.glowing.com/cn/change-uinavigationbar-backgroundcolor-dynamically/

导航栏问题

导航栏错乱http://www.jianshu.com/p/e4448c24d900

1、设置导航栏背景色或者背景图片时,会因为导航栏默认的透明度问题 跟原效果色不同。 如果设置透明度translucent 为no。 有些第三方的布局会受到影响(一般下移64)。
2、一级界面导航栏隐藏,二级界面显示。当pop回来的时候导航栏会消失。解决办法。在一级界面中,

-(void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
[self.navigationController setNavigationBarHidden:YES animated:animated];
}

-(void)viewWillDisappear:(BOOL)animated
{
    self.navigationController.navigationBarHidden = NO;
    [super viewWillDisappear:animated];
}

3、去除导航栏下方线

#define iOS10 ([[UIDevice currentDevice].systemVersion intValue]>=10?YES:NO)
- (void)viewWillAppear:(BOOL)animated{ 
       [super viewWillAppear:animated];               
       [self.navigationController.navigationBar.subviews enumerateObjectsUsingBlock:^(UIView *view, NSUInteger idx, BOOL *stop) {
      if (iOS10) { 
      //iOS10,改变了导航栏的私有接口为_UIBarBackground 
      if ([view isKindOfClass:NSClassFromString(@"_UIBarBackground")]) { 
        [view.subviews firstObject].hidden = YES; 
        } 
    }else{ 
          //iOS10之前使用的是_UINavigationBarBackground 
            if ([view isKindOfClass:NSClassFromString(@"_UINavigationBarBackground")]) { [view.subviews firstObject].hidden = YES;
                             }
                    }
          }];
}

精简版:

- (void)viewWillAppear:(BOOL)animated{
          [super viewWillAppear:animated];           
         self.navigationController.navigationBar.subviews[0].subviews[0].hidden = YES;
     }

4、导航栏返回按钮功能可以放在baseViewController中,iOS7之后系统提供了侧滑手势(interactivePopGestureRecognizer),即从屏幕左侧边缘滑起会pop回导航控制器栈的上个viewController。**不过如果你自定义了UINavigationViewController或者自定义了返回按钮,系统自带的侧滑返回功能会失效。可以如下操作,方一:

self.navigationController.interactivePopGestureRecognizer.delegate = (id)self;

方二:右滑返回功能可以去利用除系统屏幕边缘滑动返回,

#import "ViewController.h"

@interface ViewController ()<UIGestureRecognizerDelegate>

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];

    id target = self.navigationController.interactivePopGestureRecognizer.delegate;

    // handleNavigationTransition:为系统私有API,即系统自带侧滑手势的回调方法,我们在自己的手势上直接用它的回调方法
    UIPanGestureRecognizer *panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:target action:@selector(handleNavigationTransition:)];
    panGesture.delegate = self; // 设置手势代理,拦截手势触发
    [self.view addGestureRecognizer:panGesture];

    // 一定要禁止系统自带的滑动手势
    self.navigationController.interactivePopGestureRecognizer.enabled = NO;
}
// 什么时候调用,每次触发手势之前都会询问下代理方法,是否触发
// 作用:拦截手势触发
- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer
{
    // 当当前控制器是根控制器时,不可以侧滑返回,所以不能使其触发手势
    if(self.navigationController.childViewControllers.count == 1)
    {
        return NO;
    }
    return YES;
}
@end

但此方法涉及私有API不知是否影响上架,详见http://www.jianshu.com/p/737924684695

标签栏TabBar

TabBar嵌套Nav时,进行Push的时候隐藏TabBar的问题。(未完整待补充)
隐藏方式:
self.hidesBottomBarWhenPushed = YES;

将viewWillAppear里面的代码更换成:
if (self.navigationController.viewControllers.count > 1) {
self.tabBarController.tabBar.hidden = YES;
}else {
self.tabBarController.tabBar.hidden = NO;
}

相关文章

  • iOS11 自定义导航栏衍生的几个问题(高度、间距等)

    本文讨论的问题: 自定义导航栏,导航栏高度; items 与导航栏间的间距; 导航栏的层次结构; 自定义导航栏的一...

  • 升级xcode9 ios11遇到的问题及解决办法

    1. 导航栏titleView适配问题 导航栏搜索视图没有占满导航栏 iOS11 导航栏上的视图推荐使用autol...

  • iOS导航栏隐藏透明处理

    1: 导航栏隐藏之间跳转 & 导航栏隐藏后显示自定义导航栏(由于系统导航栏透明造成的动画问题 暂时还未找到...

  • 代码记录

    通用记录 状态栏 状态栏留白问题 导航栏 导航栏遮挡问题 UIScrollView 加载xib文件 返回到指定的V...

  • iOS 导航栏、状态栏

    一、修改导航栏及状态栏的透明度 iOS 修改导航栏及状态栏的透明度 二、导航栏返回按钮靠右问题

  • 导航栏细线与阴影显示问题

    某项目中,关于导航栏显示问题主要有以下几种情况出现:1)导航栏不透明,有细线;2)导航栏不透明,无细线;3)导航栏...

  • iOS自定义控件:导航栏

    是否不想使用系统提供的导航栏视图?是否还在困扰导航栏透明度的问题?是否还在厌烦导航栏颜色,背景的问题呢?那就使用自...

  • 2018-04-09

    原文:IOS状态栏和导航栏的控制问题 IOS的项目多数会遇到控制状态栏和导航栏的问题,比如隐藏状态栏、控制状态栏的...

  • iOS开发 - iOS15导航栏适配(Object-C、Swif

    iOS15导航栏适配 设置导航栏纯色/透明、解决ScrollView类上滑导航栏出现磨砂阴影的问题 Swift版导...

  • UI细节问题

    1 iOS 导航栏导致scrollView类视图自动便宜问题 (iOS 11 导航栏 automaticallyA...

网友评论

      本文标题:导航栏问题

      本文链接:https://www.haomeiwen.com/subject/fbzcuttx.html