前言           近期在做项目时遇到了好几起由于自动偏移或则没有自动偏移而导致的界面布局问题,尤其是在昨晚新版本赶上IOS9系统升级的时候,刚升级完了后就发现项目里面很多使用UINavgation控制器管理的ViewController里的TableView出现了不同程度的怪异现象,有些TableView直接以Frame的原点(0.0)为起始坐标点,有的则是以(0.128)为起始点,正确的应该是以(0.64)作为起始点,当时为了赶时间,于是就采取了笨办法,通过判断版本来手动调节远点的位置…
交友:微信号 dwjluck2013 从iOS7开始,苹果对navigationBar进行了模糊处理,并把self.navigationController.navigationBar.translucent = YES 作为默认处理.对此苹果注释的解释为 // Default is NO on iOS 6 and earlier. Always YES if barStyle is set to UIBarStyleBlackTranslucent 这时候就会出现一个问题,当你push的控制器…
iOS开发UINavigation系列一——导航栏UINavigtionBar摘要iOS中的导航条可以附着于导航控制器之中使用,也可以在controller中单独使用,这篇博客,主要讨论有关导航栏的使用相关方法.iOS开发UINavigation系列一——导航栏UINavigtionBar一.导航栏的使用        在iOS开发中,我们通常会使用导航控制器,导航控制器中封装了一个UINavigationBar,实际上,我们也可以在不使用导航控制器的前提下,单独使用导航栏,在UINavigat…
设置横竖屏不成功,可能跟所在导航控制器有关 视图没有导航控制器时,又有可能不调用ViewWillAppear,这是我遇到的问题.…
UIApplication 每一个应用都有自己的UIApplication对象,而且是单例的 通过[UIApplication sharedApplication]可以获得这个单例对象 一个iOS程序启动后创建的第一个对象就是UIApplication对象 单例对象的获取     UIApplication *app = [UIApplicationsharedApplication]; 隐藏状态栏     // 1.隐藏状态栏,ios7以后默认是由控制器控制的,如果要用UIApplicatio…
1 VC之间的跳转和正向传值 1.1 问题 在实际的开发中更多的应用都会有多个页面组成,每个页面展示不同的信息,页面之间的跳转是由视图控制器来实现的,本案例实现两个页面的之间的跳转和页面之间的正向传值,如图-1所示: 图-1 1.2 方案 首先使用Xcode创建一个SingleViewApplication项目,然后创建两个带有xib的视图控制器,继承至UIViewController类,分别命名为TRFirstViewController和TRSecondViewController. 在TR…
学到这里感觉有点难了,其实这篇文章再草稿箱里放了好久了~ 最近对于学习的热情下降了.这不行-抓紧学习走起! 在这一章节的学习中主要针对导航控制器及表视图来建立多视图的应用, 首先要了解一些概念-- 1.导航控制器 UINavigationController是用于构建分层应用程序的主要工具,它在管理以及换入和换出多个内容视图方面与UITabBarController较为类似. 两者间的不动之处在于UINavigationController是作为栈来实现,这让他非常适用于处理分层的数据.栈:先进…
UINavigationController是用于构建分层应用程序的主要工具,主要采用栈形式来实现视图.任何类型的视图控制器都可放入栈中.在设计导航控制器时需要指定根视图即用户看到的第一个视图.根视图控制器是被导航控制器推入到栈中的第一个视图控制器.当用户查看下一个试图时,栈中将加入一个新的视图控制器,它所控制的视图将展示给用户.我们可以通过导航按钮来操作分层的应用程序,用它来控制视图的推入或推出. 1.把子控制器添加到导航控制器中常用的方法 //创建视图控制器 JRViewController…
导航控制器管理一系列显示层次型信息的场景.它创建一个视图管理器"栈",栈底为根视图控制器,用户在场景间切换时,依次将试图控制器压入栈中,且当前场景的试图控制器位于栈顶.要返回上一级,导航控制器将弹出栈顶的控制器,从而回到它下面的控制器. 导航控制器还管理一个导航栏(UINavigationBar).导航栏类似于工具栏,但它是使用导航项(UINavigationItem)实例填充的,该实例被加入到导航控制器管理的每个场景中.默认情况下,场景的导航项包含一个标题和一个Back按钮.Back…
导航控制器里边如果添加UIScrollView会导致放大操作异常怪异,此时设置 self.automaticallyAdjustsScrollViewInsets = false…
介绍:在iOS中,导航控制器UINavigationController是默认实现左侧边缘侧滑手势出栈的,但是如果当开发者对导航控制器子控制实现自定义leftBaButtonItem时,这个侧滑功能就会失去效果,此时就需要我们在自定义的NavigationController中手动代码去实现了.有的时候为了提高用户体验,会试着进行全屏的侧滑返回,现在这个技术已经普遍应用到app中.下面就来介绍边缘侧滑和全屏侧滑返回..... 第一种方式:实现左侧边缘侧滑返回(系统自带的边缘侧滑,安全可靠) //…
导航控制器常用函数触发时机 当视图控制器的View将要出现时触发 - (void)viewWillAppear:(BOOL)animated 当视图控制器的View已经出现时触发 - (void)viewDidAppear:(BOOL)animated 当视图控制器的View将要消失时触发 - (void)viewWillDisappear:(BOOL)animated 当视图控制器的View已经消失时触发 - (void)viewDidDisappear:(BOOL)animated 当由前一…
(1)导航控制器初始化的时候一般都有一个根视图控制器,导航控制器相当于一个栈,里面装的是视图控制器,最先进去的在最下面,最后进去的在最上面.在最上面的那个视图控制器的视图就是这个导航控制器对外展示的界面,也就是用户看到的界面. (2)我们需要把导航控制器加载到APP中,需要把这个导航控制器设置为window的根视图控制器(都是控制器类,可以赋值),这样就相当于加载到了window里. (3)我们要在栈中新增或者删除一个视图控制器,就需要得到导航控制器,一般在栈中得所有视图控制器都有一个self.…
一.导航控制器出栈 1.initWithRootViewController本质 UIViewController *vc = [[OneViewController alloc] init]; // 创建导航控制器 // 导航控制器必须要有一个根控制器 UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:vc]; // 会调用push方法 // initWithRoot…
导航控制器的interactivePopGestureRecognizer属性 如何自定义导航控制器push出来的视图控制器的左侧返回按钮? 首先需要知道的是:如果要自定义push出来的VC的左侧返回按钮,直接设置vc.navigationItem.backBarButtonItem是不行的. 那么要想自定义返回按钮可以通过以下两种方案: 方案一. setBackButtonBackgroundImage 和 setBackButtonTitlePositionAdjustment UIImag…
iOS开发UI篇—多控制器和导航控制器简单介绍 一.多控制器 一个iOS的app很少只由一个控制器组成,除非这个app极其简单.当app中有多个控制器的时候,我们就需要对这些控制器进行管理 有多个view时,可以用一个大的view去管理1个或者多个小view,控制器也是如此,用1个控制器去管理其他多个控制器 比如,用一个控制器A去管理3个控制器B.C.D.控制器A被称为控制器B.C.D的“父控制器”:控制器B.C.D的被称为控制器A的“子控制器” 为了便于管理控制器,iOS提供了2个比较特殊的控…
IOS开发UI篇—导航控制器属性和基本使用 一.导航控制器的一些属性和基本使用 1.把子控制器添加到导航控制器中的四种方法 (1) 1.创建一个导航控制器 UINavigationController *nav=[[UINavigationControlleralloc]init]; 2.设置导航控制器为window的根视图 self.window.rootViewController=nav; 3.添加 YYOneViewController  *one = [[YYOneViewContro…
UINavigationController导航控制器,是多个界面间跳转的重要元素,可以理解为它存储着多个viewController,它的存储结构是栈,栈的特点是先进后出,所以添加视图控制器时,要特别注意. UINavigationController有几个常用的方法: 1:[UINavigationController initWithRootViewController:viewController ] 是指将哪一个视图控制器设置为导航控制器的根视图控制器,即运行是第一次看到的界面. 2:…
一.导航控制器的子类 作为导航控制器的子类,并且是导航控制器子类中的第一个,系统会默认给子控件添加EdgeInsert属性,把导航栏的宽度挤出来.但是系统只会默认修改第一个. 解决办法1:系统帮忙给第一个子控件添加了EdgeInsert,之后的子控件可以自己添加. 解决办法2:将系统默认的操作取消 --  // 自动调整scrollView的inserts Adjust--调整的意思 self.automaticallyAdjustsScrollViewInsets = NO; 解决办法3: 二…
一 多控制器 1)一个iOS的app很少只由一个控制器组成,除非这个app极其简单2)当app中有多个控制器的时候,我们就需要对这些控制器进行管理3)有多个view时,可以用一个大的view去管理1个或者多个小view4)控制器也是如此,用1个控制器去管理其他多个控制器 比如,用一个控制器A去管理3个控制器B.C.D 控制器A被称为控制器B.C.D的“父控制器” 控制器B.C.D的被称为控制器A的“子控制器” 举个例子: 首先设置加载面板为空,好让程序加载自定义控制器.   然后更新 AppDe…
导航控制器和视图控制器在添加控制器的区别 1. 因导航控制器拥有导航栈,有一个普通视图控制器都没有的数组viewControllers,加入该数组中的视图控制器默认以push的方式进入导航栈.导航控制器有个[UINavigationController alloc] initWithRootViewController:rootVC]; 的初始化方法,调用该方法相当于把rootVC加入数组viewControllers的第一个位置,作为栈底部的rootVC是不会被pop出去的,与导航控制器共生死…
关于ios导航控制器的知识总结 添加了导航控制器后: 1.一个导航控制器会有一个顶部导航栏navigationbar和一个底部工具栏toolbar,它们是导航控制器navC的属性.且导航栏默认是不隐藏的,而底部工具栏默认是隐藏的. 2.可以通过设置 self.navigationController.toolbarHidden = NO来显示底部工具栏,工具栏中的内容可以通过viewController的toolbarItems来设置,显示的顺序和设置的NSArray中存放的顺序一致,其中每一个…
一.导航控制器基础 1.导航控制器的组成 i.中间视图 ii.导航栏 iii.工具栏 2.配置一个导航界面 a.配置一个导航界面最重要的部分就是配置被包含的视图控制器. b.当它所属的视图控制器在导航控制器所控制的堆栈的顶部时(即该视图控制器将要显示时),系统自动显示该视图控制器的UINavigationItem.开发人员无需编写任何代码来调用UINavigationItem. c. 3.配置导航视图控制器 a.可以使用UINavitionController的pushViewControlle…
一.导航控制器的代理 1.UINavigationController的delegate属性 2.代理方法 1> 即将显示新控制器时调用 /* navigationController : 导航控制器 viewController : 即将显示的新控制器 */ - (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)…
前几天看了@栾小布的一篇文章:Custom backBarButtonItem,在跟着做的时候我又顺便扩展了一些,写此文章的目的是为了总结一下自己所写的东西,方便以后翻看容易,同时也是自己入行iOS一年时间,希望写点东西练练手,还有希望可以分享给大家,希望大家一同讨论,提出宝贵意见以及更简单的实现.总体效果如下: 同时受@J_雨的轻松学习之——IOS利用Runtime自定义控制器POP手势动画一文影响,所以我们将用两种方法实现. 实现思路 每一个navigationController都自带有一…
(1)导航控制器初始化的时候一般都有一个根视图控制器,导航控制器相当于一个栈,里面装的是视图控制器,最先进去的在最下面,最后进去的在最上面.在最上面的那个视图控制器的视图就是这个导航控制器对外展示的界面,也就是用户看到的界面. (2)我们需要把导航控制器加载到APP中,需要把这个导航控制器设置为window的根视图控制器(都是控制器类,可以赋值),这样就相当于加载到了window里. (3)我们要在栈中新增或者删除一个视图控制器,就需要得到导航控制器,一般在栈中得所有视图控制器都有一个self.…
看到现在app 中越来越流行的手势滑动实现pop效果,心里很是痒痒跃跃欲试,经过多方查看资料,终于在简书上找到了详细的实现方案: 轻松学习之二——iOS利用Runtime自定义控制器POP手势动画 经过修改实现了简单的(自定义导航控制器)手势滑动实现pop返回效果: 1.先打印了导航控制器的interactivePopGestureRecognizer,log结果如下: <UIScreenEdgePanGestureRecognizer: 0x7fe5f1579ce0; state = Poss…
(1)效果 (2)源码与第三方类库下载 http://download.csdn.net/detail/wsb200514/8155979 (3)总结 --导航控制器,能够直接用代码的push和pop来控制控制器之间的跳转.也能够使用storyboard的segue来:这里又涉及2种,一种是直接用button拖拽到还有一个控制器形成segue,这样的segue不可拦截,假设点击直接跳转.还有一种是从一个控制器拖拽到还有一个控制器形成的segue,这样的segue没有明白的点击谁来跳转,所以有一个…
(1)导航控制器初始化的时候一般都有一个根视图控制器,导航控制器相当于一个栈,里面装的是视图控制器,最先进去的在最以下,最后进去的在最上面.在最上面的那个视图控制器的视图就是这个导航控制器对外展示的界面,也就是用户看到的界面. (2)我们须要把导航控制器载入到APP中,须要把这个导航控制器设置为window的根视图控制器(都是控制器类,能够赋值),这样就相当于载入到了window里. (3)我们要在栈中新增或者删除一个视图控制器,就须要得到导航控制器,一般在栈中得全部视图控制器都有一个self.…
UINavigationController是IOS 中常用的功能,基本用法如下: 1.在AppDelegate.m中添加如下代码: #import "AppDelegate.h" #import "MainViewController.h" @interface AppDelegate () @end @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFi…