首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

iOS开发UINavigation系列一——导航栏UINavigtionBar

iOS开发UINavigation系列一——导航栏UINavigtionBar 一、导航栏的使用         在iOS开发中,我们通常会使用导航控制器,导航控制器中封装了一个UINavigationBar...,实际上,我们也可以在不使用导航控制器的前提下,单独使用导航栏,在UINavigationBar中,也有许多我们可以定制的属性,用起来十分方便。...二、UINavigationBar的创建和风格类型         导航栏继承于UIView,所以我们可以像创建普通视图那样创建导航栏,比如我们创建一个高度为80的导航栏,将其放在ViewController...我们也可以设置导航栏的风格属性,从iOS6之后,UINavigationBar默认为半透明的样式,从上面也可以看出,白色的导航栏下面透出些许背景的红色。...的push与pop操作         UINavigationBar上面不只是简单的显示标题,它也将标题进行了堆栈的管理,每一个标题抽象为的对象在iOS系统中是UINavigationItem对象,我们可以通过

1.2K31
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【IOS开发基础系列】Navigation页面导航专题

    对于父级VC与子级VC分别有navigationController的情况,即不是使用push方式加载子VC,而是通过AddChildViewController的方式添加的场景,则父级导航条会覆盖在子级导航条上面...,而不是在NavigationViewController中实现。...导航条设置为半透明         将NavigationBar设置透明(仅将指定视图控制器进行透明处理),步骤如下:     1.在视图控制器的头文件中实现UINavigationControllerDelegate...    方法一:(自定义视图的方法,一般人也会采用这样的方式)         就是在导航向上添加一个titleView,可以使用一个label,再设置label的背景颜色透明,字体什么的设置就很简单了...否则会导致页面切换时选中状态不准确         TabBar与导航条混用时,TabBarItem的设置是在NavigationController中,而不是内容Controller中,切记!!!

    45520

    iOS导航栏使用总结

    目录: 一、设置导航栏样式 二、解决自定义导航栏返回按钮后侧滑不可用问题 三、隐藏导航栏底部的分割线 四、导航栏引起的布局问题 相关文章:iOS状态栏的使用总结 一、设置导航栏样式 设置导航栏的样式可分为全局设置与局部设置...; 1.全局设置 全局设置一般的都是在AppDelegate中设置,这样整个app都会生效,相关的代码与效果图如下: //1.设置导航栏背景颜色 [[UINavigationBar appearance...导航栏视图层级图 从图中可以看出,导航栏的底部分割线是一个UIImageView对象,而且高度只有0.5,所以我们可以据此获取到导航栏的底部分割线对象,在一个视图控制器中实现此需求,代码如下: #import...,用于优化滑动类视图(继承于UIScrollView的视图)在视图控制里的显示: iOS系统的导航栏UINavigationBar与标签栏UITabBar默认都是半透明模糊效果,在这种情况下系统会对视图控制器的...UI布局进行优化:视图控制器里面第一个被添加进去的视图是滑动类视图,并且其Frame是整个屏幕大小时,系统会自动调整其contenInset,以保证滑动视图里的内容不被UINavigationBar与UITabBar

    3.2K20

    iOS开发UINavigation系列四——导航控制器UINavigationController

    iOS开发UINavigation系列四——导航控制器UINavigationController 一、引言         在前面的博客中,我么你介绍了UINavigationBar,UINavigationItem...//iOS7之后,在导航中右划会进行pop操作,设置这个的enable可以控制设置手势是否失效 @property(nullable, nonatomic, readonly) UIGestureRecognizer... *interactivePopGestureRecognizer; 四、iOS8后导航的新特性 //这个方法是为了iOS方法的命名统一,在导航中,其作用和push一样 - (void)showViewController...fromVC toViewController:(UIViewController *)toVC ; 六、与UIViewController相关         当一个controller被添加到导航中后...; //push的时候隐藏底部栏,如push后隐藏tabbar @property(nonatomic) BOOL hidesBottomBarWhenPushed; //管理它的导航控制器 @property

    1.8K20

    iOS11UINavigationBar的item左右间距调整

    相信很多同学都知道在iOS7之后调整导航栏两侧按钮距离左右间距,其实就是在左右barButtonItem的数组中添加一个宽度为负的占位item。...一个新界面之后再返回回来之后位置就还原了  解决方案其实很简单,只要将设置leftItem的方法写在viewWillAppear中即可,这样即可保证约束不会被系统重置。...现在有一个终极解决方案: UINavigationBarContentView平铺在导航栏中作为iOS11的各个按钮的父视图,该视图的所有的子视图都会有一个layoutMargins被占用,也就是系统调整的占位...,我们只要把这个置空就行了.那样的话该视图下的所有的子视图的空间就会变成我们想要的那样,当然为了保险起见,该视图的父视图也就是bar的layoutMargins也置空,这样 整个bar就会跟一个普通视图一样了...导航栏按钮位置问题的解决

    1.5K30

    iOS11UINavigationBar的item左右间距调整

    相信很多同学都知道在iOS7之后调整导航栏两侧按钮距离左右间距,其实就是在左右barButtonItem的数组中添加一个宽度为负的占位item。...一个新界面之后再返回回来之后位置就还原了  解决方案其实很简单,只要将设置leftItem的方法写在viewWillAppear中即可,这样即可保证约束不会被系统重置。...现在有一个终极解决方案: UINavigationBarContentView平铺在导航栏中作为iOS11的各个按钮的父视图,该视图的所有的子视图都会有一个layoutMargins被占用,也就是系统调整的占位...,我们只要把这个置空就行了.那样的话该视图下的所有的子视图的空间就会变成我们想要的那样,当然为了保险起见,该视图的父视图也就是bar的layoutMargins也置空,这样 整个bar就会跟一个普通视图一样了...导航栏按钮位置问题的解决

    3.2K50

    iOS导航栏基础效果配置

    标题设置 self.navigationItem.title = @"标题"; 复制代码 正常情况下,控制器的标题会默认作为导航标题 前景色 self.navigationController.navigationBar.barTintColor...setBackgroundImage:[UIImage imageNamed:@"Background"] forBarMetrics:UIBarMetricsDefault]; 复制代码 状态栏字体颜色和隐藏 在iOS7...之后仍要使用第一种方法全局设置,则需要在plist文件中添加View controller-based status bar appearance 字段,值为NO ,意为不使用控制器管理状态栏。...self.navigationController.interactivePopGestureRecognizer.delegate = (id)self; // 控制手势在根控制器时不触发 - (...中有效, 或者是UINavagaitonController中的RootController 中设置有效 - (void)setNavigationControllerAppearance {

    1.6K10

    UINavigationController 导航控制器概念属性方法

    (iOS7之后,在导航中右划会进行pop操作,设置这个的enable可以控制设置手势是否失效) @property(nullable, nonatomic, readonly) UIGestureRecognizer...(nullable, nonatomic, weak) id delegate; 16、当一个controller被添加到导航中后,系统会为它分配一些属性...的时候隐藏底部栏,如push后隐藏tabbar @property(nonatomic) BOOL hidesBottomBarWhenPushed; (3)获取管理它的导航控制器 @property(...*> *)viewControllers animated:(BOOL)animated; 3、管理视图控制器操作 (1)压入新的视图控制器 - (void)pushViewController:(...UIViewController *)viewController animated:(BOOL)animated; 这个方法是为了iOS方法的命名统一,在导航中,其作用和push一样 - (void)

    2.2K60

    iOS小技能:自定义导航栏,设置全局导航条外观

    前言 在开发需求时app中使用的导航条在一个模块的主题基本是一致的,因此可通过自定义导航条来进行统一控制。...*navigationBar =[UINavigationBar appearance];//获取所有导航条外观 //方式二:获取我们自己导航控制器的导航条-- 确保系统的其它功能(短信)的导航条与自己的冲突...,尤其在短信分享这方面要注意 UINavigationBar *navigationBar; if (IOS9) { //9.0的API navigationBar...*标题:@property(nonatomic,copy) NSDictionary *titleTextAttributes;// 字典中能用到的key在UIStringDrawing.h中// 最新版本的...重写push方法就可以拦截所有压入栈中的子控制器,统一做一些处理 */ - (void)presentViewController:(UIViewController *)viewControllerToPresent

    2.5K20

    iOS系统中导航栏的转场解决方案与最佳实践

    第二个是用虚线圈起来的方法,它们也有可能不被调用,这与 ViewController 里的布局代码相关,假设跳转到新页面后,新旧页面中的控件位置会发生变化,或者由于数据改变驱动了控件之间的约束关系发生变化...除了上面说到的两点,pop 过程中还需要注意一点,那就是从 B 返回到 A 的过程中,A 视图控制器的 viewDidLoad 方法并不会被调用。...translucent 属性值为 NO 的前提下,更改导航栏的背景色。 对于第一种情况,我们需要调用 UINavigationBar 的 setBackgroundColor: 方法。...ViewController 视图里的第一个子控件是 UIScrollView 类型的视图。 ViewController 是 navigation 或者 tab 类型控制器的子视图控制器。...,在视图控制器的 viewDidLoad 或者 viewWillAppear: 方法里去设置导航栏样式。

    2.4K30

    IOS开发之视图和视图控制器

    视图(View), 视图控制器(ViewController)是IOS开发UI部分比较重要的东西。在学习视图这一块的东西的时候,感觉和Java Swing中的Panel差不多。...我们还可以把视图看做是一个视图容器,视图上面还可以添加一个子视图。往父视图中添加的SubView会被放在一个数组中。...下面是iOS提供的一些管理子视图的方法,常用方法如下:             (1) initWithFrame : 通过frame初始化视图,参数为CGRectMake(x, y, width, height...(3) insertSubView: aboveSubView: 在某个视图上插入子视图。             ...在使用是,你通常不必直接UITableBar和UINavigationBar的项,而是通过恰当的控制器接口或Interface Builder来对其进行配置,Table Bar 和 Navigation

    1.8K70

    Cocoa编程中视图控制器与视图类详解

    ;   提示:UIViewController 有一个属性是navigationController,如果当前ViewController在某个NavigationController的堆栈中 的话(即是被推送过来的...在发送presentModalViewController: animated:消息后,一个新的视图控制器(其实是个ModalViewController)会滑动到屏幕并掌握控制权,直到使用dismissModalViewControllerAnimated...在实现UITabBarControllerDelegate委托的视图控制器中重写init方法来自定义UITabBarItem条目。...iOS编程中占据非常重要的位置,因此我们一定要掌握。...控制器加载视图过程 当调用视图控制器的view属性时,视图控制器会先调用loadView方法加载视图,因此,可以在loadView方法中创建所有的视图,这是比较好的编程惯例。

    5.1K50

    你可能需要为你的 APP 适配 iOS11

    一、在UIKit’s Bars中加入的新功能 WWDC通过iOS新增的文件管理App:Files开始介绍,在Files这个APP中能够看到iOS11中UIKit’s Bars的一些新特性:在浏览功能上的大标题视图...5、UIToolbar and UINavigationBar— Layout 在 iOS 11 中,当苹果进行所有这些新特性时,也进行了其他的优化,针对 UIToolbar 和 UINavigaBar...要避免视图尺寸为0,可以从以下方面做: ● UINavigationBar 和 UIToolbar 提供位置 ● 开发者则必须提供视图的size,有三种方式: ① 对宽度和高度的约束; ② 实现 intrinsicContentSize...的新特性 1、 Scroll Views 如果有一些文本位于UI滚动视图的内部,并包含在导航控制器中,现在一般navigationContollers会传入一个contentInset给其最顶层的viewController...,默认情况下,表视图的整个内容避免了其根视图控制器的安全区域的插入。

    2.5K00

    你可能需要为你的APP适配iOS11

    一 在UIKit’s Bars中加入的新功能 WWDC通过iOS新增的文件管理App:Files开始介绍,在Files这个APP中能够看到iOS11中UIKit’s Bars的一些新特性:在浏览功能上的大标题视图...UIToolbar and UINavigationBar— Layout 在 iOS 11 中,当苹果进行所有这些新特性时,也进行了其他的优化,针对 UIToolbar 和 UINavigaBar 做了新的自动布局扩展支持...要避免视图尺寸为0,可以从以下方面做: ● UINavigationBar 和 UIToolbar 提供位置 ● 开发者则必须提供视图的size,有三种方式:  ① 对宽度和高度的约束; ② 实现 intrinsicContentSize...的新特性 Scroll Views 如果有一些文本位于UI滚动视图的内部,并包含在导航控制器中,现在一般navigationContollers会传入一个contentInset给其最顶层的viewController...默认情况下,表视图的整个内容避免了其根视图控制器的安全区域的插入。

    82920

    你可能需要为你的 APP 适配 iOS 11

    在UIKit’s Bars中加入的新功能 WWDC通过iOS新增的文件管理App:Files开始介绍,在Files这个APP中能够看到iOS11中UIKit’s Bars的一些新特性:在浏览功能上的大标题视图...UIToolbar and UINavigationBar— Layout 在 iOS 11 中,当苹果进行所有这些新特性时,也进行了其他的优化,针对 UIToolbar 和 UINavigaBar 做了新的自动布局扩展支持...要避免视图尺寸为0,可以从以下方面做: UINavigationBar 和 UIToolbar 提供位置 开发者则必须提供视图的size,有三种方式: 对宽度和高度的约束; 实现 intrinsicContentSize...; 通过约束关联你的子视图; 二....UIScrollView and UITableView的新特性 Scroll Views 如果有一些文本位于UI滚动视图的内部,并包含在导航控制器中,现在一般navigationContollers会传入一个

    1.7K60

    【iOS开发-22】navigationBar导航栏,navigationItem建立:获取导航栏中的基本文本和button以及各种跳跃

    须要创建两个视图控制器(ViewController根视图控制器,SecondViewController子视图控制器),然后放在导航控制器栈中。...视图上下左右居中显示在标题的位置 UIView *textView1=[[UIView alloc]initWithFrame:CGRectMake(10, 10, 50, 30)];...,所谓跳转,事实上就是往导航控制器栈中PUSH或者POP一个视图控制器,这样在最上面的视图控制器就变了,这样视图也跟着变了,由于仅仅显示在栈顶得那个视图控制器的视图 //所以(1)控制所谓的跳转...事实上是导航控制器在控制,在里面的元素都能够通过navigationController属性获取到它们所在的导航控制器 //所以(2)获取到导航控制器之后,使用Push的那个方法,往栈里面放一个视图控制器...button的title就是上一级的navigationItem的title文字 [self.navigationItem setTitle:@"子页"]; //我们也能够在子页中自己定义一个返回

    2.4K10

    iOS透明导航栏的平滑过渡(进阶版)引实现过程结

    引 如我在传送门:iOS导航栏切换界面时隐藏和显示中所说,现在很多App的个人中心模块都是不保留导航栏的,会直接使导航栏透明,比如做的很好的QQ个人信息界面: 为什么说QQ做的很好呢?...而很多App的做法其实比较粗糙,类似于我在传送门:iOS导航栏切换界面时隐藏和显示中的做法,需要导航栏透明时,直接将导航栏隐藏起来。...首先我们遍历打印出UINavigationBar的所有子视图,是所有,包括子视图的一层层子视图,来看看到底导航栏都包含了哪些东西: 上面这张图就是导航栏UINavigationBar所包含的所有子view...了,序号和缩进表示了其层级归属关系,打印的方法可以看这篇文章:传送门:iOS遍历打印所有子视图 从这些子view的类名能够大概猜出他们都是导航栏上的什么,让我们大胆猜测一下,_UIBarBackground...,我们可以在 UINavigationController 的 Delegate 中添加一个处理,监控松手后时自动完成返回还是取消返回操作,同时使用 UIView 动画(关于 UIView 动画可以看我的这篇文章

    3.1K40

    NavigationBar&tabBar调色那些事儿1. 导航栏调色那些事儿2. 标签栏TableBar那些事儿

    iOS 7 NavigationBar的下方默认是有一条阴影的,如果想要 NavigationBar 和下面内容的背景颜色融为一体的话,就要去掉这个阴影。...iOS7以后,status bar 的背景颜色变成了透明色,而且系统会根据 app的颜色自动改变 status bar 的字体颜色(黑和白)。...方法一: 在 Info.plist 中的 Information Property List 中添加一个 Key为View controller-based status bar appearance的...,需要隐藏整个 StatusBar,方法如下: 状态栏的高度是20 方法一: 和改变 StatusBar 颜色一样,在 Info.plist 中的 Information Property List 中添加一个...,在全局导航栏控制器下面还需要增加以下方法: - (UIViewController *)childViewControllerForStatusBarStyle{ return self.topViewController

    1.5K50
    领券