美文网首页iOS
导航栏,状态栏,底部高度

导航栏,状态栏,底部高度

作者: 若风_412d | 来源:发表于2019-04-18 09:35 被阅读0次

    // 状态栏高度
    CGFloat statusBarHeight = [[UIApplication sharedApplication] statusBarFrame].size.height;
    // 导航栏高度
    CGFloat navBarHeight = self.navigationController.navigationBar.frame.size.height;
    X以前: 20,44
    x以及以后:44,44

    //状态栏和导航条高度

    #define getRectNavAndStatusHight  self.navigationController.navigationBar.frame.size.height+[[UIApplication sharedApplication] statusBarFrame].size.height
    

    x 底部高度:34

    二。
    创建一个UINavigationController
    @interface ABNavigationController : UINavigationController
    1.统一设置title颜色和大小

    self.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName:[UIColor whiteColor],NSFontAttributeName:[UIFont boldSystemFontOfSize:17]};
    
    

    2.统一设置导航条

    #pragma mark 重写push方法 导航栏按钮
    - (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated {
        
    //    if (self.pushing == YES) {
    //        NSLog(@"被拦截");
    //        return;
    //    } else {
    //        NSLog(@"push");
    //        self.pushing = YES;
    //    }
        if (self.childViewControllers.count > 0) { // 如果push进来的不是第一个控制器
            UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
            //[button setTitle:@"返回" forState:UIControlStateNormal];
            [button setImage:[UIImage imageNamed:@"问题反馈"] forState:UIControlStateNormal];
           // [button setImage:[UIImage imageNamed:@"刷新"] forState:UIControlStateHighlighted];
            button.size = CGSizeMake(70, 30);
    //下面两行设置图片位置和大小
            [button setImageEdgeInsets:UIEdgeInsetsMake(5, -5, 5, 0)];//上左下右
            button.imageView.contentMode = UIViewContentModeScaleAspectFit;
            // 让按钮内部的所有内容左对齐
            button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
            //        [button sizeToFit];
            // 让按钮的内容往左边偏移10
          //  button.contentEdgeInsets = UIEdgeInsetsMake(0, -10, 0, 0);//上左下右
          //  [button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
          //  [button setTitleColor:[UIColor redColor] forState:UIControlStateHighlighted];
            [button addTarget:self action:@selector(popViewControllerAnimated:) forControlEvents:UIControlEventTouchUpInside];
            [button setBackgroundColor:[UIColor redColor]];
            // 修改导航栏左边的item
            viewController.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:button];
            
            // 隐藏tabbar
            viewController.hidesBottomBarWhenPushed = YES;
        }
        
        // 这句super的push要放在后面, 让viewController可以覆盖上面设置的leftBarButtonItem
        // 意思是,我们任然可以重新在push控制器的viewDidLoad方法中设置导航栏的leftBarButtonItem,如果设置了就会覆盖在push方法中设置的“返回”按钮,因为 [super push....]会加载push的控制器执行viewDidLoad方法。
            [super pushViewController:viewController animated:animated];
    }
    

    UINavigationBar透明设置

    - (void)viewWillAppear:(BOOL)animated{
        [super viewWillAppear:animated];
        
        
        
        [self.navigationController.navigationBar setTranslucent:YES];//设置透明度
    
        //    //颜色字体
        self.navigationController.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName:kWhiteColor,NSFontAttributeName:[UIFont boldSystemFontOfSize:17]};
        
        
        
        UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
        [button setImage:[UIImage imageNamed:@"icon_back"] forState:UIControlStateNormal];
        button.size = CGSizeMake(70, 44);
        [button setImageEdgeInsets:UIEdgeInsetsMake(5, 5, 5, 0)];//上左下右
        button.imageView.contentMode = UIViewContentModeScaleAspectFit;
        button.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
        [button addTarget:self action:@selector(backBtn) forControlEvents:UIControlEventTouchUpInside];
        self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:button];
        //状态栏
    //1.在info.plist中添加View controller-based status bar appearance,值为NO
    
    
        [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
    }
    
    - (void)viewWillDisappear:(BOOL)animated{
        [super viewWillDisappear:animated];
        
        [self.navigationController.navigationBar setTranslucent:NO];//设置透明度
    
        [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleDefault;//状态栏
        //颜色字体
        self.navigationController.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName:kNavTitleColor,NSFontAttributeName:[UIFont boldSystemFontOfSize:17]};
        
    }
    

    相关文章

      网友评论

        本文标题:导航栏,状态栏,底部高度

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