iOS 导航栏设置

2023-10-27

  • 导航栏右侧的Done按钮怎么是蓝色的?
  • 导航栏右侧按钮大小设置
  • 导航栏标题按钮样式设置
  • 导航栏设置颜色
  • 导航栏变白不显示颜色?

iOS 13 之后使用新的API和类(UINavigationBarAppearance)来设置导航栏的标题大小,颜色,字体;导航栏的颜色;导航栏按钮样式。

#import "MMBaseNavigationController.h"

@interface MMBaseNavigationController ()

@end

@implementation MMBaseNavigationController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    
    
    /// Config the navigation bar appearance
    
    if (@available(iOS 13.0, *)) {
        UINavigationBarAppearance *appearance = [[UINavigationBarAppearance alloc] init];
        // Navigation bar background image
        appearance.backgroundImage = [UIImage imageNamed:@"top"];
        // Navigation bar title
        appearance.titleTextAttributes = @{NSFontAttributeName:[UIFont systemFontOfSize:20],NSForegroundColorAttributeName:[UIColor whiteColor]};

        // Config the done button appearance
        UIBarButtonItemAppearance *doneAppearance = [[UIBarButtonItemAppearance alloc] init];
        doneAppearance.normal.titleTextAttributes = @{NSFontAttributeName:[UIFont systemFontOfSize:16],NSForegroundColorAttributeName:[UIColor whiteColor]};
        appearance.doneButtonAppearance = doneAppearance;
        
        self.navigationBar.standardAppearance = appearance;
        self.navigationBar.scrollEdgeAppearance = appearance;
    }
    else {
        [[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"top"] forBarMetrics:UIBarMetricsDefault];
        [[UINavigationBar appearance] setShadowImage:[[UIImage alloc] init]];
    }

@end
  • standardAppearance 和 scrollEdgeAppearance

standardAppearance 和 scrollEdgeAppearance 分别是导航栏的标准样式和滚动样式。
什么是标准样式?其实就是静态显示的样式。
什么是滚动样式,就是当导航视图被present出来这种,这时候如果不设置scrollEdgeAppearance的话导航栏颜色就是白色的(iPhone上是这样,iPad的不会出现)。

  • 在Controller中添加导航栏按钮
    self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Done" style:UIBarButtonItemStyleDone target:self action:@selector(done:)];

注意

  1. self.navigationItem,不小心写成self.navigationController.navigationItem就错了,不是一回事。
  2. style:UIBarButtonItemStyleDone

设置图片

    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    button.frame = CGRectMake(0, 0, 40, 40);
    [button setImage:[UIImage imageNamed:@"back-icon"] forState:UIControlStateNormal];
    [button addTarget:self action:@selector(backButtonPressed:) forControlEvents:UIControlEventTouchUpInside];
    
    UIBarButtonItem *leftBarButtonItem  = [[UIBarButtonItem alloc] initWithCustomView:button];
    self.navigationItem.leftBarButtonItem = leftBarButtonItem;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iOS 导航栏设置 的相关文章

随机推荐

  • tplogin服务器无响应,tplogin.cn打不开解决教程

    TP Link TL WDR6600 有线路由器作为无线交换机应用设定实例教程 1 电脑连接和无线路由器 将设定连接电脑到无线路由器的LAN口 保证系统自动获得到IP地址和DNS服务器ip 以下 留意 以便防止IP地址或DHCP网络服务器矛
  • 查看linux jvm使用情况,查看jvm内存使用命令

    jmap linux下特有 也是很经常使用的一个命令 java 观察运行中的jvm物理内存的占用状况 linux 参数以下 数据库 heap 打印jvm heap的状况 histo 打印jvm heap的直方图 其输出信息包括类名 对象数量
  • oracle提示 o s-error,【案例】Oracle报错OSD-04016 O/S-Error 使用dd复制数据块恢复数据...

    天萃荷净 运维DBA反映数据库在异常断电导致硬盘IO出现O S Error OS 23 数据错误 循环冗余检查 错误 分析原因为坏块导致 通过dd来复制数据块修复数据库 一台数据库因为异常断电导致硬盘IO出现O S Error OS 23
  • 在vue项目引入天地图,根据经纬度获取具体地址

    1 申请key 天地图地图服务对所有用户开放 使用本组服务之前 需要申请Key 2 引入API 地图API是由JavaScript语言编写的 您在使用之前需要通过
  • OpenCV——双边滤波

    目录 一 双边滤波 二 C 代码 三 python代码 四 结果展示 一 双边滤波 双边滤波是一种综合考虑滤波器内图像空域信息和滤波器内图像像素灰度值相似性的滤波算法 可以实现在保留区域信息的基础上实现对噪声的去除 对局部边缘的平滑 双边滤
  • 神码ai伪原创【php源码】

    大家好 小编为大家解答python必备常用英语词汇笔记的问题 很多人还不知道python中常用的英语单词 现在让我们一起来看看吧 火车头采集ai伪原创插件截图 一 什么是注释 注释是对一段代码的解释 不参与程序运行 起到提示作用 教我pyt
  • Windows注册表互换Caps Lock、Shift、Ctr l键

    按键映射 在注册表找到 HKEY LOCAL MACHINE SYSTEM CurrentControlSet Control Keyboard Layout 下如果没有Scancode Map就新建一个二进制值项名为Scancode Ma
  • 有了这两本书,学习领域驱动设计会很容易

    自2003年Eric Evans的著作 领域驱动设计 面世以来 领域驱动设计 DDD 相关的实践书籍并不多 整体的理论发展速度并不快 以至于很长一段时间 开发团队的实践过程总是磕磕绊绊 这让他们觉得领域驱动设计的门槛很高 甚至有人怀疑领域驱
  • Linux——fork进程复制,fork的写时拷贝技术

    前言 进程是一个运行中的程序 每个进程都有一个进程控制块 英文缩写PCB Linux系统中的进程控制块是一个结构体strut task struct实现 PCB是进程存在的唯一标志 数据结构中定义的内容是为后面的管理提供支持的 所以不同的操
  • 记录promise解决js与oc交互中异步回调的实践

    项目需求 更改h5与客户端 安卓 ios交互 的交互方法 使用第三方jsBridge 因为使用了js来定义方法 oc调用的模式 大坑 导致兼容 页面刷新 客户端外调用等情况 难以解决 因为需要 在交互方法之后进行判断 从而执行回调 而交互无
  • 越早加入刷脸支付将享受越多的政策

    刷脸支付已成为2019支付生态的风口 对于超市 便利店 企事业单位 停车场 餐厅等所有支付场景 越早加入刷脸支付 将享受越多的风口红利 现在 牵手掌优科技 便能快速接入刷脸支付 开拓全国刷脸支付市场 瓜分更多支付红利 支付宝 蜻蜓 采用了3
  • iOS 8 and iPhone 6 for web developers and designers: next evolution for Safari and native webapps

    本文原文为 iOS 8 and iPhone 6 for web developers and designers next evolution for Safari and native webapps 译者 罗罗磊磊 转载请注明 喜大普
  • python typeerror总结_错误总结

    1 TypeError The value of a feed cannot be a tf Tensor object Acceptable feed values include Python scalars strings lists
  • C++ 面试资料总结(全)

    C interview 总结了下C 相关的基础知识用于面试 大部分内容从网上搜罗而来 侵删 有些内容是根据自己理解写的 如有错误请指出哦 const 修饰变量 说明该变量不能被改变 修饰指针 分为指向常量的指针和指针常量 指向常量的指针值指
  • 考研复试数据库原理课后习题(十一)——并发控制

    并发控制 1 数据库中为什么要并发控制 并发控制能保证事务的哪些特性 数据库是共享资源 通常有多个事务同时在运行 当多个事务并发地存取数据库时就会产生读取和 或修改同一数据的情况 若对并发操作不加控制就可能会存取和存储不正确的数据 破坏数据
  • win7 easybcd 安装centos7.5 双系统

    之前用easybcd安装过Ubuntu 比较简单 腾出一些空间 添加引导项 然后就可以想安装普通的操作系统一样安装了 安装完之后 可以修改grub 让其可以同时引导Linux和Windows 这样就装好了 但是安装centos7有些地方不一
  • 12_MySQL之DCL语言

    文章目录 1 概述 2 用户管理 2 1 添加用户 2 2 删除用户 2 3 修改用户密码 2 4 查询用户 3 权限管理 3 1 查询权限 3 2 授予权限 3 3 取消权限 1 概述 DCL是数据库控制语言 用于执行权限的授予和收回操作
  • Unity的C#编程教程_34_for循环语句挑战2数苹果

    使用协同程序 协程 Coroutine 来分解循环程序 设计一个数苹果的程序 每隔1秒数一次 using System Collections using System Collections Generic using UnityEngi
  • 影院管理系统!个人做的,还有不完整的地方,源码我奉献了吧!

    影院管理系统 个人做的 还有不完整的地方 源码我奉献了吧 下载地址 http download csdn net detail liangrui1988 5753387
  • iOS 导航栏设置

    导航栏右侧的Done按钮怎么是蓝色的 导航栏右侧按钮大小设置 导航栏标题按钮样式设置 导航栏设置颜色 导航栏变白不显示颜色 iOS 13 之后使用新的API和类 UINavigationBarAppearance 来设置导航栏的标题大小 颜