美文网首页
UINavigationController

UINavigationController

作者: Barry_小闪 | 来源:发表于2016-11-14 10:58 被阅读48次

    隐藏NavigationBar时的一个坑(很实用)
    自定义iOS7导航栏背景,标题和返回按钮文字颜色
    iOS手势返回的实现(自定义返回按钮)

    • 修改所在视图及下级视图的 tabBar 背景颜色
    self.navigationController.navigationBar.barTintColor = [UIColor redColor];
    
    • 设置自定义标题 Title
    self.navigationController.navigationBar.titleTextAttributes = [NSForegroundColorAttributeName: UIColor.whiteColor(), NSFontAttributeName: UIFont(name: "Times new roman", size: 20)!]
    
    • 修改所在视图 除标题外的 文字颜色
     self.navigationController.navigationBar.tintColor = UIColor.whiteColor()
    
    • 透明度 Translucent
     navigationController?.navigationBar.translucent = false 
    // 如果设置这个属性为 True, 同时设置了一个不透明的自定义背景图片,导航栏将使用一个小于1.0的系统不透明度给这个图片
    // 如果在设置这个属性为 False, 同时设置了一个透明的自定义背景图片,导航栏将会用给图片提供一个黑色不透明背景如果你使用了UIBarStyleBlack, 提供白色不透明背景如果使用了UIBarStyleDefault, 或者设置为barTintColor 如果这个值有被设置的话
    
    • 修改下一视图的 返回按钮 的属性
    let backButton = UIBarButtonItem(title: "Back", style: UIBarButtonItemStyle.Plain, target: nil, action: nil)
      self.navigationItem.backBarButtonItem = backButton
    
    • 导航栏样式 barStyle
     navigationController?.navigationBar.barStyle = .Black
        // 这个会导致navigationBar 变成黑色背景 
        // .Default 是白色背景黑色的字
    
    • 修改UINavigationController,UINavigationBar背景颜色,字体颜色
    - (void)setNav
    {
        UINavigationBar *bar = [UINavigationBar appearance];
    
        //设置显示的颜色
        bar.barTintColor = [UIColor colorWithRed:62/255.0 green:173/255.0 blue:176/255.0 alpha:1.0];
    
        //设置字体颜色
        bar.tintColor = [UIColor whiteColor];
    
        [bar setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor whiteColor]}];
    
    //或者用这个都行
        [bar setTitleTextAttributes:@{UITextAttributeTextColor : [UIColor whiteColor]}];
    
    效果图

    隐藏底部Bar

    appDetaiVC.hidesBottomBarWhenPushed = YES;
    NavigationController和ViewController 都可以调用该方法
    
    自定制返回键
    
     //修改系统返回键是图片和文字,会保留侧拉返回功能
      UIImage *backButtonImage = [[UIImage imageNamed:@"fanhui.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 30, 0, 0)];
      [[UIBarButtonItem appearance] setBackButtonBackgroundImage:backButtonImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
      //将返回按钮的文字position设置不在屏幕上显示
      [[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(NSIntegerMin, NSIntegerMin) forBarMetrics:UIBarMetricsDefault];
    
    
    - (void)viewWillDisappear:(BOOL)animated
    {
        [super viewWillDisappear:animated];
        
        // 开启
        if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
            self.navigationController.interactivePopGestureRecognizer.enabled = YES;
        }
    }
    
    
    - (void)viewWillDisappear:(BOOL)animated { 
      [super viewWillDisappear:animated]; 
    //代理置空,否则会闪退
      if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) {
     self.navigationController.interactivePopGestureRecognizer.delegate = nil;
        }
      }
    - (void)viewDidAppear:(BOOL)animated {
       [super viewDidAppear:animated];
       //开启iOS7的滑动返回效果
      if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) 
      { 
       //只有在二级页面生效 
       if ([self.navigationController.viewControllers count] == 2) { 
    self.navigationController.interactivePopGestureRecognizer.delegate = self; 
      }
     }
    }
    
    

    相关文章

      网友评论

          本文标题:UINavigationController

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