博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS UINavigationBar-导航栏、UINavigationItem-导航项
阅读量:5740 次
发布时间:2019-06-18

本文共 1900 字,大约阅读时间需要 6 分钟。

一、什么是导航栏(UINavigationBar)。 

 UINavigationBar(导航栏)是UINavigationController(导航控制器)的一个属性。是导航栏控制器上的一个组成部分。

  *一个导航栏控制器包含一个导航栏(UINavigationBar)

  *一个子控制器对应一个导航项(UINavigationItem)

  *导航控制器管理一系列子控制器。UINavigationBar管理一系列UINavigationItem,每个UINavigationItem对应一个子控制器。

  

  注意:如图浅蓝色部分即是UINavigationItem,NavigationItem是在视图控制器上的,它是试图控制器的一个属性,也是一个组成部分,而不是在NavigationBar上,所以你会看到在viewController里有self.navigationItem这样的代码。UINvigationController每push一次UINavigationBar就会对应上相应的UINavigationItem。

  

 

二、设置导航栏(UINavigationBar)标题等

  1、使用导航栏内置的标题 

    在试图控制器viewController中用self.title=@"导航栏标题";就OK了。

  2、自定义导航栏标题

    UINavigationItem有几个常用的属性,如下:(摘抄自文档,部分属性)

    @property(nonatomic,copy)   NSString        *title;//标题

    @property(nonatomic,retain) UIView          *titleView;//这是个view,能放在view上的东西应该都可以放在上面。我们可以根据这个属性自定义标题,也可以加图片背景等。

    @property(nonatomic,copy) NSArray *leftBarButtonItems NS_AVAILABLE_IOS(5_0);//在导航栏(UINavigationItem)上可以放button。左边的button,当然也有右边的button。如下原理一样。

    @property(nonatomic,copy) NSArray *rightBarButtonItems NS_AVAILABLE_IOS(5_0);

    @property(nonatomic,retain) UIBarButtonItem *leftBarButtonItem;

    @property(nonatomic,retain) UIBarButtonItem *rightBarButtonItem;

 

    根据titleView属性自定义导航栏标题:

    UILabel * titleLabel = [[UILabel alloc] initWithFrame: CGRectMake(0, 0, 100, 44)]; 

    titleLabel.backgroundColor = [UIColor redColor];

      titleLabel.text = @"我的视图控制器";

    self.navigationItem.titleView = titleLabel; //为什么titleView会=titleLabel呢?因为UILabel是继承与UIView的。

 

    写到这我们会发现viewController的标题,就是控制器viewController上navigationItem的上的一个继承与UIView的view,即titleView。

    navigationItem是继承与NSObject的。navigationItem是试图控制器viewController上的一部分,是它的一个属性。navigationItem也有title,也有一个titleView,如:

    self.navigationItem.title=@"";//一般我们不常设置这个属性

      self.navigationItem.titleView=@"";//titleView是navigationItem上用来放置标题,背景图等得地方。设置导航栏背景图,就是根据这个属性设置的。

 

    初学iOS,如有错误,请不吝赐教,比改之。

转载于:https://www.cnblogs.com/ios-mengxiang/p/4357710.html

你可能感兴趣的文章
java数组只能交换0下标和n_编程练习-只用0交换排序数组
查看>>
java的maxrow_聊聊pg jdbc statement的maxRows参数
查看>>
centos7安装mysql视频教程_centos7安装mysql(完整)
查看>>
php图片赋值,php如何优雅地赋值
查看>>
dz.27z.co index.php,dz7.2 伪静态规则
查看>>
php字符串解析xml文件,PHP通过DOM解析XML文件或者xml字符串_PHP教程
查看>>
matlab corr2原码,Ncorr-二维数字图像校正软件
查看>>
mysql增量,MySQL完全、增量的备份与恢复
查看>>
matlab程序复制出现乱码,matlab代码或中文复制到word就变成乱码怎么办?
查看>>
java writer append,Java StringWriter append()方法
查看>>
动态矩阵 matlab代码,动态矩阵控制
查看>>
用php实现一个音频播放的代码,用VBS实现音乐播放的多个代码小结
查看>>
如何解决OutOfMemoryError
查看>>
彻底学会使用epoll(四)——ET的写操作实例分析
查看>>
你所不知的SEO高级策略技巧
查看>>
Lync Server 2010所需媒体网络流量带宽详解和计算
查看>>
使用Managed Extensibility Framework方便的扩展应用程序
查看>>
Java网络编程从入门到精通(19):套接字(Socket)的异常
查看>>
关于win7系统软件兼容性的的问题解决方法
查看>>
如何卸载iPhone模拟器中的自己创建的程序
查看>>