美文网首页
nav导航栏相关

nav导航栏相关

作者: 喵喵粉 | 来源:发表于2019-11-26 21:02 被阅读0次

    tabBar、nav、statusBar高度

    #define kStatusBarHeight UIApplication.sharedApplication.statusBarFrame
    #define kTabBarHeight    self.tabBarController.tabBar.frame.size.height
    #define kNavBarHeight    self.navigationController.navigationBar.frame.size.height
    
    - iPhoneX系列 iPhone8等无刘海
    kStatusBarHeight 44 20
    kTabBarHeight 83 49
    kNavBarHeight(有导航栏) 44 44
    - (void)initView {
        self.navigationItem.title = @"E";
        self.view.backgroundColor = [UIColor whiteColor];
        
        //定制返回按钮image
        self.navigationController.navigationBar.backIndicatorImage = [[UIImage imageNamed:@"back2"] imageWithRenderingMode:(UIImageRenderingModeAlwaysOriginal)];
        self.navigationController.navigationBar.backIndicatorTransitionMaskImage = [[UIImage imageNamed:@"back2"] imageWithRenderingMode:(UIImageRenderingModeAlwaysOriginal)];
        
        //nav黑线 (https://blog.csdn.net/hherima/article/details/44218915)
         self.navigationController.navigationBar.clipsToBounds = YES;
    
        //导航栏背景图片
        UIImage *image = [UIImage imageNamed:@"video-nav"];
        image = [image resizableImageWithCapInsets:UIEdgeInsetsMake(10, 10, 50, 300) resizingMode:(UIImageResizingModeStretch)];
        [self.navigationController.navigationBar setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];
    
    
        //设置导航栏标题颜色
        [self.navigationController.navigationBar setTitleTextAttributes:@{NSForegroundColorAttributeName:[UIColor cyanColor]}];
    
        //导航栏背景色
        self.navigationController.navigationBar.barTintColor = [UIColor lightGrayColor];
    
        //系统的左右rightBarButtonItem的颜色
        self.navigationController.navigationBar.tintColor = [UIColor orangeColor];
            
        UIBarButtonItem *backItem = [[UIBarButtonItem alloc] init];
        backItem.title = @"返回dd";
        self.navigationItem.backBarButtonItem = backItem;
        
        UIBarButtonItem *rightItem = [[UIBarButtonItem alloc] initWithTitle:@"右边" style:(UIBarButtonItemStylePlain) target:nil action:nil];
        self.navigationItem.rightBarButtonItem = rightItem;
    
        // 左边按钮和返回按钮共存
        self.navigationItem.leftItemsSupplementBackButton = YES;
    
    }
    
    1 2
    • nav半透明
    //导航栏背景色 (颜色有偏差,是因为有一层毛玻璃效果视图 取消毛玻璃效果)  这个会影响subview的坐标子控制器视图整体下移
    self.navigationController.navigationBar.translucent = NO;
    // 视图延伸不考虑透明的Bars(这里包含导航栏和状态栏) 意思就是延伸到边界
    self.extendedLayoutIncludesOpaqueBars = YES;
    
    extendedLayoutIncludesOpaqueBars https://www.jianshu.com/p/45ad9fa3f47f
    这个属性在状态栏不透明的状态下才生效。也就是说,一般使用这个属性应该这样使用:
    {
        // 状态栏不透明(必须设置,并且为NO)
        self.navigationController.navigationBar.translucent = NO;
        
        // 视图延伸不考虑透明的Bars(这里包含导航栏和状态栏)
        // 意思就是延伸到边界
        self.extendedLayoutIncludesOpaqueBars = YES;
    }
    
    • 导航栏按钮定制
    leftBack@2x.png 21x40
    
    //订制返回按钮
    UIButton *btnBack = [UIButton buttonWithType:UIButtonTypeCustom];
    btnBack.frame = CGRectMake(0, 0, 45, 40);
    
    [btnBack setImage:[UIImage imageNamed:@"leftBack"] forState:UIControlStateNormal];
    [btnBack setImage:[UIImage imageNamed:@"leftBack"] forState:UIControlStateHighlighted];
    
    //内容左对齐
    btnBack.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
    btnBack.contentEdgeInsets = UIEdgeInsetsMake(0, 0, 0, 0);
    
    [btnBack addTarget:self action:@selector(buttonClickAction) forControlEvents:UIControlEventTouchUpInside];
    UIBarButtonItem *leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:btnBack];
    self.navigationItem.leftBarButtonItem = leftBarButtonItem;
    

    相关文章

      网友评论

          本文标题:nav导航栏相关

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