B的属性赋值方法; A中当前方法中Push 操作; A中当前方法的剩余操作; A viewWillDisappear B viewDidLoad B viewWillAppear 导航push...在入口类中全局设置就可以达到统一导航栏颜色的效果。 ...VC中可以设置这返回的颜色: [self.navigationController.navigationBar setTintColor:[UIColor redColor]];//不写默认是蓝色的back...UINavigationItem属于MVC中的M,封装了要显示在UiNavigationBar上的数据,定义了UINavigationItem上按钮的触发事件,外观等 -initWithBarButtonSystemItem...提供push和pop操作item.
前言 我们在使用键盘的时候,在打字完毕后想要收起键盘继续操作,要么是习惯性点击界面空白处收起键盘,要么是在键盘上方点击一个“完成”之类的按钮来收起键盘。...这里有一行要注意: //关键的代码,不写的话不会在键盘上面显示工具条 [textField setInputAccessoryView:topView]; 这一行的意思是把工具栏作为输入框的InputAccessoryView...上面我们是将一个tooBar作为inputAccessoryView,这就是另一种实现方式,不使用delegate,单独创建一个UIToolBar,直接设置上去,这个toolbar的样式与功能和键盘的工具栏是不一样的...,还记得上面的delegate中设置了一下只有当不是选取器的textfield时才显示键盘的工具栏吗,如果不判断一下,两个工具栏会冲突,结果就是什么都不显示,创建工具栏的代码如下: // 工具栏按钮 -...的数组,来存储三个UIBarButtonItem对象,注意,为什么是三个呢,界面上不是只有取消和完成两个按钮吗?
引言 原理:利用系统的返回手势interactivePopGestureRecognizer进行实现 使用场景:返回按钮有点小,不好触发返回时,可借助右滑返回来提升用户体验 在这里插入图片描述 I 、...添加右滑返回手势 若项目有全局的UINavigationController基类,给页面添加右滑返回手势 @implementation NavigationController - (void)viewDidLoad...,发生当前不可以手势返回,可先检查为什么当前状态,系统不允许你的手势返回,例如是否隐藏了 navigationBar,或者隐藏了系统的返回按钮?...方法将手势返回强制加回来 2.3 动态添加方法 使用场景: 在消息发送和消息转发时会用到动态添加方法 全局控制返回手势 下面的+addMethod方法有三个参数,第一个参数是要添加方法的类,第二个参数是方法的.../** 往类上添加新的方法与其实现 @param class 相应的类 @param methodSel 添加的方法 @param methodSelImpl 包含方法实现的SEL */
iOS开发UINavigation系列二——UINavigationItem 一、引言 UINavigationItem是导航栏上用于管理导航项的类,在上一篇博客中,我们知道导航栏是通过...push与pop的堆栈操作来对item进行管理的,同样,每一个Item自身也有许多属性可供我们进行自定制。...二、来说说UINavigationItem Item,从英文上来理解,它可以解释为一个项目,因此,item不是一个简单的label标题,也不是一个简单的button按钮,它是导航栏中管理的一个项目的抽象...三、关于UIBarButtonItem 一个UINavigationItem中,还可以包含许多BarButtonItem,BarButtonItem是一系列的按钮,会出现在导航栏的左侧或者右侧...这个barButtonItem是一个按钮,可以触发一个方法,这有时候对我们来说十分有用。
message"}]; [rightBtn setImage:[UIImage imageNamed:@"window_message"] forState:UIControlStateNormal]; UIBarButtonItem...*rightBtnItem = [[UIBarButtonItem alloc] initWithCustomView:rightBtn]; ---- AOP 页面统计 关键代码 + (void)trackViewAppear...} error:NULL]; } 使用方法 在ICPageList.plist文件中配置需要统计的页面类名以及页面...newClass selector:seletor eventID:eventId]; } } }); } 使用方法 在ICEventList.plist文件中配置需要统计的方法名称以及方法...ID 项目中部分特殊业务逻辑可单独调用ICClickRecord中的event方法进行事件统计 ---- 统计数据存储模块 事件触发-->存储 ICClickRecord + (void)event:
} - (BOOL)prefersStatusBarHidden { return YES; } 复制代码 若iOS7之后仍要使用第一种方法全局设置,则需要在plist文件中添加...= (id)self; // 控制手势在根控制器时不触发 - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch...UIGraphicsEndImageContext(); return image; } 复制代码 全局设置导航栏外观 //全局设置导航栏主题,只在AppDelegate中有效, 或者是UINavagaitonController中的...RootController 中设置有效 - (void)setNavigationControllerAppearance { [UINavigationBar appearance].barStyle...但是如果用navigationBar.hidden隐藏导航栏,我们可以继续使用navigationBarHidden提供的滑动pop效果,如果用navigationBarHidden,这个操作将无效;但前者
引言 原理:利用系统的返回手势interactivePopGestureRecognizer进行实现 使用场景:返回按钮有点小,不好触发返回时,可借助右滑返回来提升用户体验 I 添加右滑返回手势 1.1...基于全局的UINavigationController基类实现 若项目有全局的UINavigationController基类,给页面添加右滑返回手势 @implementation NavigationController...,发生当前不可以手势返回,可先检查为什么当前状态,系统不允许你的手势返回,例如是否隐藏了 navigationBar,或者隐藏了系统的返回按钮?.../** 往类上添加新的方法与其实现 @param class 相应的类 @param methodSel 添加的方法 @param methodSelImpl 包含方法实现的SEL */...//自定义的WKScriptMessageHandler 是为了解决内存不释放的问题 WeakWebViewScriptMessageDelegate *weakScriptMessageDelegate
UI 控件分类 UI 控件分类 : 活动控件, 被动控件, 静态控件; -- 活动控件 : 继承了 UIControl 基类, 该类控件可以与用户交互, 对应操作会激发对应的 事件绑定回调方法, 之前的...UIButton 就是这种控件; -- 静态控件 : 继承了 UIView 基类, 该类控件与用户之间不能交互, 之前使用的 UILabel 就是这种控件; -- 被动控件 : 该类控件可以接受用户操作..., 通常用于接收用户输入, 这种方法不会触发 IBAction 方法, 文本框就是一种被动控件; 2....; -- 高亮 : UI 控件突出显示, 处于高亮状态; 手放在按钮上处于高亮状态; -- 禁用 : UI 控件关闭后, 处于禁用状态; 禁用状态的控件不可操作, 禁用操作在 Interface Builder...父类的属性; (3) UITextView 与 UITextField 区别 UITextView 与 UITextField 区别 : -- 单行与多行 : UITextView 是多行文本,
引言 原理:利用系统的返回手势interactivePopGestureRecognizer进行实现 使用场景:返回按钮有点小,不好触发返回时,可借助右滑返回来提升用户体验 ?...I 、添加右滑返回手势 若项目有全局的UINavigationController基类,给页面添加右滑返回手势 @implementation NavigationController - (void...,发生当前不可以手势返回,可先检查为什么当前状态,系统不允许你的手势返回,例如是否隐藏了 navigationBar,或者隐藏了系统的返回按钮?...方法将手势返回强制加回来 2.3 动态添加方法 使用场景: 在消息发送和消息转发时会用到动态添加方法 全局控制返回手势 下面的+addMethod方法有三个参数,第一个参数是要添加方法的类,第二个参数是方法的.../** 往类上添加新的方法与其实现 @param class 相应的类 @param methodSel 添加的方法 @param methodSelImpl 包含方法实现的SEL */
前言 在ReactiveCocoa 过程中,除去RACSignal和RACSubject这些信号类以外,有些时候我们可能还需要封装一些固定的操作集合。...这些操作集合都是固定的,每次只要一触发就会执行事先定义好的一个过程。在iOS开发过程中,按钮的点击事件就可能有这种需求。那么RACCommand就可以实现这种需求。...RACCommand的定义 ? 首先说说RACCommand的作用。 RACCommand 在ReactiveCocoa 中是对一个动作的触发条件以及它产生的触发事件的封装。...这个变量在具体实现中是用的volatile原子的操作,在实现中重写了它的get和set方法。...这里给UIBarButtonItem类新增了2个关联对象,key分别是UIControlRACCommandKey,UIControlEnabledDisposableKey。
项目使用代码,storyboard,和xib结合完成,但是框架的搭建不建议使用storyboard,因为框架的搭建往往页面比较多,多个页面挤在storyboard中实在难受,并且难找。...实现UINavigationController 返回按钮统一设置 方法一:创建基类,其他继承基类,自动有这个按钮类型 创建一个UINavigationController基类,设置好统一的返回按钮,...PCH文件 所有文件都用的到的东西,例如颜色设置的宏,分类,修改的输出日志等等,我们可以写到PCH文件中,保证所有的文件都可以用,而不用频繁的每个类中都引入 #ifdef __OBJC__ /** 在这之间的...frame,bounds也是定义在分类里 可以看到,这种定义在分类里的属性,实际上是实现了相应的方法,并在方法里边通过访问其它属性来达到目的。这通常用来简化某些操作。 2....为什么不直接设置frame而需要一个中间量来设置呢? 因为在分类的方法实现中不可以直接访问本类的私有属性,但是可以调用本类的set,get方法。 4.
分别有多点触控、摇一摇以及远程操作(在iOS之后新增了3DTouch事件类型)。在一个用户点击事件处理过程中,UIEvent对象是唯一的。...点击对象UITouch UITouch表示单个点击,其类文件中存在枚举类型UITouchPhase的属性,用来表示当前点击的状态。这些状态包括点击开始、移动、停止不动、结束和取消五个状态。...*)event; - (void)motionCancelled:(UIEventSubtype)motion withEvent:(UIEvent *)event; 远程控制事件 额外配件如耳机上的音视频播放按键所触发的事件...3.类似地,视图层次中的每个后续视图如果不处理事件都首先传递给它的视图控制器(如果有的话),然后是它的父视图。 4.最上层的容器视图将事件传递给UIWindow对象。...但是当我们要操作的视图不是UITextView或UITextField的时候,inputAccessoryView就变成了readonly的。
: 在故事板布局的样式截图为: 下面我们就通过纯代码的方式创建如下: 1、创建两个控制器类,一个为主控制器类MasterViewController,一个为详细控制器类DetailViewController...2、导入几张素材图片,用来在详细控制器中显示。...所有的文件截图为: 3、下面就是具体的代码创建了: //在AppDelegate.m文件中: 导入头文件并声明必要的属性,同时实现分割控制器的协议 #import "AppDelegate.h" #import...pragma mark - //主控制器将要隐藏时触发的方法 -(void)splitViewController:(UISplitViewController...ontoPrimaryViewController:(UIViewController *)primaryViewController { return YES; } //主控制器将要显示时触发的方法
侧滑返回手势是从iOS7开始增加的一个返回操作,经历了两年时间估计iPhone用户大部分都已经忽略了屏幕左上角那个碍眼的back按钮了。...一 侧滑返回 侧滑返回是系统iOS7自带的一种方便用户进行返回操作而推出的一种新功能。在开发过程中,对侧滑返回进行控制非常简单,主要就是启动侧滑手势和禁用侧滑手势。...他们都属于UINavigationItem的组成部分,都显示在navigationBar上,都属于UIBarButtonItem类,所以我给他们取名为导航条上的按钮三兄弟,哈哈哈。。。 ... 中添加按钮,然后添加按钮的点击功能即可。...对于导航栏上的按钮三兄弟,我们在3个类下面都能发现他们,比如当前在一个UIViewController内,输入以下方法都能发现他们。
在含有导航条的ViewController中,VC的navigationItem与VC.navigationController中的 navigationItem并不是同一个对象,如下图所示...UINavigationControllerDelegate,例如: @interface PicturePreviewViewController: UIViewController 2.在实现类中加入这个代理的方法及具体操作如下...,去掉后边的文字,在网上查了一些资料,最简单且没有副作用的方法就是: [[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment...NavigationController中,而不是内容Controller中,切记!!!...否则会导致页面切换时选中状态不准确 TabBar与导航条混用时,TabBarItem的设置是在NavigationController中,而不是内容Controller中,切记!!!
它是一种立体触控技术,可感应不同的触控压力。通过该技术可以给 App 设置最多 4 个不同的 ShortcutItem(快捷操作菜单),实现方式分为静态和动态两种。...view.backgroundColor = .blue } } UIMenu UIMenu 在 iOS 13 中引入,可以很方便的创建程序菜单和上下文菜单。...isToolbarHidden = false // 菜单绑定到UIBarButtonItem(iOS 14的构造函数) let addNewItem = UIBarButtonItem...Delete", "icon": "trash.fill" } ] Context Menus WWDC 2019 推出了上下文菜单(Context Menus),也是通过按压的方式触发...如果要启用上下文菜单,需要创建一个UIContextMenuInteraction并将其添加给某个触发的 UIView,然后指定 delegate,在代理方法创建 UIMenu 并返回UIContextMenuConfiguration
图1.3 搜索的表现 ? 图1.4 “我的Tab”表现 在图1.1中乍一看表现还不错,可是在图1.2中,下拉刷新之后,我们的导航栏还是被刘海挡住了。...所以苹果不建议我们的 UI 元素过于靠近这部分区域。 ?...图4.5 这个新属性在 iPhone X 上的值 那为什么会发生偏移?这个偏移的值又是怎么确定的?...归结起来是三类问题: StatusBar 变高并且绝对布局。 导航栏的视图层级结构发生变化而导致 UI(titleView、UIBarButtonItem) 问题。...至于 Tabbar ,因为我们用的是系统的,所以目前并没有发现什么奇怪的地方。希望我们踩的这些坑可以让各位在适配的过程中少走一些弯路!
iOS开发UINavigation系列三——工具栏UIToolBar iOS中除了UINavinationBar之外,还有工具栏UIToolBar可以供我们使用,工具栏和导航栏十分类似,...只是功能更加简单,工具栏中也有UIBarButtonItem按钮,在前两篇博客中,对导航栏和导航项都进行的讨论,地址如下: UINavigationBar:http://my.oschina.net/u...,与之相对,工具栏一般会出现在视图的的底部,上面可以填充一些按钮,提供给用户一些操作。...下面是UIToolBar中的一些方法,其中大部分在UINavigationBar中都有涉及,这里只做简单的介绍: //工具栏的风格,和导航栏类似,有黑白两种 @property(nonatomic) UIBarStyle... barStyle; //设置工具栏上按钮数组 @property(nullable,nonatomic,copy) NSArrayUIBarButtonItem *> *items; //设置工具栏是否透明
1.登陆页面的的跳转实现 在登陆ViewController中要跳转到TabBarController中需要根据用户输入的信息来实现跳转。...其实在我们storyboard中还是蛮简单的,在storyboard选择我们要关联的视图控制器,在 Class中选中我们新建的视图控制器类即可。...关联完以后我们就可以在相应的试图控制器类中实现我们的业务逻辑啦,操作如下: ? 3....上面的各种ViewController关联以后,我们在给各个ViewController绑定实体的类后,就可以专心的实现我们每个View的业务逻辑的。...在View中展示数据的时候,TableView用的也是蛮多的。 对于TableView如何使用,在后面的博客会进行详细的介绍。
前言 iOS开发中,UITextField和UITextView是最常用的文本接受类和文本展示类的控件。UITextField和UITextView都输入文本,也都可以监听文本的改变。...不同的是,UITextField继承自UIControl这个抽象类。UITextView继承自UIScrollView这个实体类。...而UITextField只能单独的展示一行内容。从这个角度,UITextView在功能上是优于UITextField的。...而开发中,我们经常会遇到既要占位文字,又要可以多行展示并且可以滚动的控件,单纯的UITextField或者UITextView都不能满足这种产品上的需求。...)]; [topView setBarStyle:UIBarStyleDefault]; UIBarButtonItem * btnSpace = [[UIBarButtonItem alloc