UIDocument对象是一种独立于ViewController管理数据的方法。 文档对象是知道如何读写数据到持久存储的控制器对象。...调节 ViewController负责呈现View,并使该呈现适应底层环境。每个iOS应用程序都应该能够在iPad上运行,并且可以在几种不同大小的iPhone上运行。...例如,UINavigationController对象显示来自子ViewController的内容以及由导航控制器管理的导航栏和可选工具栏。...当涉及容器ViewController时,UIKit可能会修改链来简化您必须编写的代码。不同的演示风格对于它们在屏幕上的显示方式有不同的规则 - 例如,全屏显示总是覆盖整个屏幕。...适配修改 应用程序可以在各种iOS设备上运行,并且ViewController被设计为适应这些设备上不同大小的屏幕。
1.在控制器中得到设备的旋转方向 在 iOS8及以后,屏幕就只有旋转后屏幕尺寸之分,不再是过期的旋转方向。...:duration animations:^{ }]; } 2.iPad中Modal弹出控制器的方式和样式 Modal常见有4种呈现样式 控制器属性 modalPresentationStyle...之后过渡样式pop样式 UIModalPresentationNone 3. iPad特有的UIPopoverController的使用 案例: 情景① 在导航栏上添加leftBarButtonItem...按钮,然后弹出UIPopoverController 创建UIPopoverController控制器的内容控制器添加到UIPopoverController上 1>设置内容控制器(并需先创建内容控制器...View上添加个按钮,点击,弹出一个UIPopoverController控制器,然后这个控制器再用导航控制器包装,显示二级控制器 1>调用方法 /** * 弹出UIPopoverController
iOS视频功能模块的开发 一、使用MPMoviePlayerController进行视频播放 MPMoviePlayerController是iOS中进行视频播放开发的一个控制类,里面涵盖了视频播放中大部分的需求功能...; 将要进入全屏模式时发送的通知 NSString * const MPMoviePlayerDidEnterFullscreenNotification; 已经进入全屏时发送的通知 NSString...二、MPMoviePlayerViewController视频视图控制器 如果你很熟悉MVC,你可能会觉得MPMoviePlayerController的设计模式非常蹩脚,强行要求你将控制器的视图分离出来加在另外的...进行的简单的初始化后,对其中MPMoviePlayerController进行其他配置,之后通过模态跳转切换控制器即可。 ...的模态跳转方法,也可以通过导航push与pop 代码示例如下: @interface ViewController2 () @property(nonatomic,strong)MPMoviePlayerController
对于父级VC与子级VC分别有navigationController的情况,即不是使用push方式加载子VC,而是通过AddChildViewController的方式添加的场景,则父级导航条会覆盖在子级导航条上面...,所以需要在载入时把父级导航条做隐藏处理: 1.2 navigationItem 在含有导航条的ViewController中,VC的navigationItem与VC.navigationController...开发-22】navigationBar导航条和navigationItem设置:基本搞定导航条上的文字和按钮以及各种跳转 http://www.tuicool.com/articles/BZNVza 2.3.2...questions/227078/creating-a-left-arrow-button-like-uinavigationbars-back-style-on-a-uitoolba 2.3.3 手动添加并呈现带导航条的子...: UIBarMetricsDefault]; 2.5 常见开发问题 2.5.1 tableView被导航栏遮挡 IOS开发---菜鸟学习之路--(二十四)-iOS7View被导航栏遮挡问题的解决 http
要点 interactivePopGestureRecognizer 是UINavigationController自带手势,当我们自定义了导航条的返回按钮后,这个手势就自动失效了,也就是说无法滑动返回...条件 很多情况下我们不得不自定义导航条的返回按钮,但是我们也要滑动返回上一级的效果。 思路 既然自动失效,那我们就告诉它什么时候生效。...苹果官方文档说明 翻译:第一个被添加的控制器成为永远不会被出栈的根控制器 步骤 自定义一个 UINavigationController ,即继承于 UINavigationController...animated:(BOOL)animated { // 根据 栈 先进后出 if (self.viewControllers[0] == viewController) { // 根控制器...只有左侧边缘滑动才有效 附上Demo 最后说两句 这样就可以了,但是注意了,现在实现的是滑动返回功能,并没有全屏滑动返回~~接下来看下一篇吧 iOS - 实现UINavigation全屏滑�动返回(二
管理着ToolBar,通过navigationController.toolbar方式调用 控制器管理的东西 每个界面的Controller管理一个它界面的NavigationItem(通过controller...*barHideOnSwipeGestureRecognizer; 10、屏幕滑动的时候是否隐藏导航栏,常用于tableView,上滑隐藏导航栏,下滑显示,带动画效果 @property (nonatomic...; 13、敲击屏幕可以隐藏与显示导航栏 @property (nonatomic, readwrite, assign) BOOL hidesBarsOnTap; 14、获取敲击屏幕的手势 @property...(1)通过一个自定义的导航栏和工具栏创建导航控制器 - (instancetype)initWithNavigationBarClass:(nullable Class)navigationBarClass...UIViewController *)viewController animated:(BOOL)animated; 这个方法是为了iOS方法的命名统一,在导航中,其作用和push一样 - (void)
其它三个都是通过对应的控制器类来完成工作,而不是直接构建和管理视图。 ...; 提示:UIViewController 有一个属性是navigationController,如果当前ViewController在某个NavigationController的堆栈中 的话(即是被推送过来的...iOS编程中占据非常重要的位置,因此我们一定要掌握。...主要属性 • view: 控制器管理的根视图 • title: 控制器导航栏的标题 • wantsFullScreenLayout: 是否需要全屏显示 • interfaceOrientation: 界面方向...设计模式 传统的mvc设计模式 image.png 添加描述 iOS mvc设计模式 image.png 添加描述 主要区别在于view和model之间的数据交换都要通过控制器来协调
从图中我们可以看出: status bar 从20 变成了 44 导航条高度依然是 44 顶部的总体高度变成 88 安全区域距离页面底部需要保留 34pt,系统自带的 Tabbar已经适配好了...没有适配 iPhoneX的触底页面 旧工程如何在iphoneX全屏显示 只需要在LaunchImage中添加一个尺寸为1125 × 2436的启动图,并且工程使用LaunchImage加载启动图的,而不是使用...portrait是人像模式,也就是竖屏。...]; }else{ self.automaticallyAdjustsScrollViewInsets = NO; } iPhone X push的时候TabBar上移 系统原生的Tabbar...值得注意的是:我这个项目中使用的是系统自带的导航栏、Tabbar。
iOS 7以前 在iOS 7之前,状态栏是不占视图位置的。每个控制器中的根view都是从屏幕的Y轴20px处开始显示的。...API iOS 7 ~iOS 9 从iOS 7开始系统风格大变样,图标扁平了,状态栏也不在闹独立了。因为状态栏的会受到导航栏或者View背景色的影响,所以状态栏的风格也需要实时调整了。...效果gif iOS 9 之后 如上面第二张图所示,UIApplication的控制状态栏的方法,在iOS 9之后被弃用了。 所以iOS 9之后尽量使用重写ViewController方法的方式吧。...情形二 状态栏的样式、是否显示实际上是由顶层window的当前视图控制器决定的。...window和其根视图控制器的背景色必须为clearColor。
想必大家都用过微信,微信间的页面切换是如何做成的呢?接下来我们用storyboard结合着代码来模拟一下微信的视图控制模式。 ...下面将会结合一个实际的效果来简单的介绍一下TabBar和NavigationBar, 然后说一下用我们的storyboard和纯代码如何配置我们的NavigationBar, 上一篇博客中提到了如何用Navigation...下面的视图控制器之间的关系是如何用storyboard拖出来的,在之前的博客中有所提及,在这小编就不赘述了。 ViewController之间的关系大致入下图: ? ...:YES completion:^{ 15 }]; 16 } 17 } 2.如何给我们新建的视图控制器关联我们新建的视图控制器类呢?...接下来会为每个导航控制器配置NavigateBar, 在一个NavigationController中只有一个NavigationBar, 而在一个NavigationController下的各个ViewController
先来看看QMUI如何实现实现右滑返回?...可以通过forceEnableInteractivePopGestureRecognizer来决定要不要把那个手势返回强制加回来。.../** 往类上添加新的方法与其实现 @param class 相应的类 @param methodSel 添加的方法 @param methodSelImpl 包含方法实现的SEL */...= YES; // 在iOS上默认为NO,表示是否允许不经过用户交互由javaScript自动打开窗口 preference.javaScriptCanOpenWindowsAutomatically...= YES; config.preferences = preference; // 是使用h5的视频播放器在线播放, 还是使用原生播放器全屏播放
响应设备的方向变化。 有一些特殊的视图控制器(导航控制器、标签栏控制器)可以更加方便和规范地管理 UIView。 创建 storyboard 初始化箭头指向的 UIViewController。...iOS 13 之后,模态跳转并非全屏显示,如果需要全屏显示,需要手动设置。 两个概念 presentedViewController: 被 present 的控制器。...需要设置当前的 UIViewController 为被代理 UIViewController 中的代理属性。 闭包 可以理解为代理模式中协议的闭包替代,比代理模式更简单。...iOS 9 之后 NSNotificationCenter 无需手动移除观察者。 常见ViewController UIAlertController 警告(对话框)控制器。...iOS11 之后可以设置大标题。可以通过 storyboard 直接设置,也可以通过如下的代码设置: // 所有界面显示大标题 navigationController?.
那么我们如何实现应用间的相互跳转呢?先来看下原理。 3. 应用间相互跳转实现原理 在iOS中打开一个应用程序只需要拿到这个应用程序的协议头即可,所以我们只需配置应用程序的协议头即可。...原理:通过设置跳转到应用B的URL Schemes(自定义的协议头),应用B将其自身“绑定”到一个自定义URL Schemes上,就可以从应用A中利用应用B的URL Schemes启动应用B了。...这里用导航控制器Push两个ViewController,通过Storyboard Segue设置两个ViewController的标识符绑定,分别为"homeToPage1"和"homeToPage2...在主控制器中我们可以通过- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender;方法获取将要跳转的页面控制器。...AppA" 在App-B的主控制器ViewController中增加一条属性@property (nonatomic, copy) NSString *urlString;,并在App-B中通过AppDelegate
前言 在开发需求时app中使用的导航条在一个模块的主题基本是一致的,因此可通过自定义导航条来进行统一控制。...设置导航条渐变颜色 设置全局导航条按钮主题 拦截push:通过自定义类,重写自带的方法实现 I、自定义导航栏 1.1 HWNavigationController.h #import <UIKit/UIKit.h...//方式二:获取我们自己导航控制器的导航条-- 确保系统的其它功能(短信)的导航条与自己的冲突,尤其在短信分享这方面要注意 UINavigationBar *navigationBar...iOS6导航栏背景的出图规格 非retina:320x44 px retina:640x88 px iOS7导航栏背景的出图规格 retina:640x128...animated:animated]; } #pragma mark - 重写: animated: /** 1)自定义导航控制器的价值 重写push方法就可以拦截所有压入栈中的子控制器,统一做一些处理
controller的管理 导航控制器是一个堆栈结构,只是其中管理的对象是controller,通过push与pop进行controller的切换,我们有两种方式可以创建导航控制器: /.../通过一个自定义的导航栏和工具栏创建导航控制器 - (instancetype)initWithNavigationBarClass:(nullable Class)navigationBarClass... toolbarClass:(nullable Class)toolbarClass; //使用系统默认的导航栏和工具栏,通过一个根视图创建导航控制器 - (instancetype)initWithRootViewController...) BOOL hidesBarsWhenKeyboardAppears; //屏幕滑动的时候隐藏导航栏,常用于tableView,上滑隐藏导航栏,下滑显示,带动画效果 @property (nonatomic...:(UIViewController *)viewController animated:(BOOL)animated; //设置方法设置导航控制器支持的设备方向 - (UIInterfaceOrientationMask
iOS开发中标签控制器的使用——UITabBarController 一、引言 与导航控制器相类似,标签控制器也是用于管理视图控制器的一个UI控件,在其内部封装了一个标签栏,与导航不同的是...,导航的管理方式是纵向的,采用push与pop切换控制器,标签的管理是横向的,通过标签的切换来改变控制器,一般我们习惯将tabBar作为应用程序的根视图控制器,在其中添加导航,导航中在对ViewController...通过点击下面的标签按钮,可以很方便的切换控制器。如果我们的控制器数超过4个,系统会被我们创建一个more的导航,并且可以通过系统自带的编辑来调整控制器的顺序,如下: ? ?...ViewController @property(nonatomic) NSUInteger selectedIndex; //当viewController大于4个时,获取"更多"标签的导航控制器 @...; //标签控制器中分装的标签栏 @property(nonatomic,readonly) UITabBar *tabBar NS_AVAILABLE_IOS(3_0); //代理 @property
1、iOS上的页面展示和逻辑 1.1 iOS的MVC设计模式 在介绍iOS的页面展示之前,我们需要先知道iOS应用的运行逻辑和设计模式。...2、Controller 的页面管理 上文提到,iOS中通过Controller(控制器)来管理View的绘制逻辑,那么具体是如何实现的呢? ...UINavigationController通过栈的方式管理控制器的切换,控制入栈和出栈来展示各个视图控制器。 ...而点击应用上方的NavigationBar返回按钮(如果没有隐藏起来的话)就会pop当前的ViewController,也就是返回上一层。...---- 至此,我们了解到了iOS端是如何去实现路由管理的,那么,就请期待我们下一篇文章《大前端开发中的路由管理之五:Flutter篇》吧,下篇文章将为大家揭秘Flutter是如何去做路由管理的
之前也把MVC往asp.net开发上靠过,试着去解耦各层的依赖,但是终究扯不清楚。MVC,也就是把系统设计分三层:数据模型、显示视图、逻辑控制器。...这样一说,Web开发中的MVC应该就比较好理解了。 那么移动开发中的MVC呢?个人喜欢比较学习法,在学习IOS开发的MVC运用时,总是不由自主地拿去跟Web开发中的MVC模式做比较。...;另外界面底部还有命令按钮视图,支持表数据提交操作; 一开始笔者将这个界面进行了分拆,分为四个View来实现,且每个View对应自己的ViewController:顶部一个是导航NavView,一个日期切换...(这个多半还是因为笔者对IOS开发工具不熟所致,还望见谅) 因为只有一个ViewController,所以所有响应事件的处理逻辑都在此ViewController对象中声明与实现。...在MVC中,似乎数据流转到M就停止了(虽然也有很多基于服务端数据的APP应用),这是因为客户端数据量相对更少,客户端系统是以功能为中心的,相较于数据是什么,用户更关心数据是如何呈现的(或者叫数据的流转方式
iOS对UIViewController生命周期和属性方法的解析 一、引言 作为MVC设计模式中的C,Controller一直扮演着项目开发中最重要的角色,它是视图和数据的桥梁,通过它的管理...,将数据有条有理的展示在我们的View层上。...loadView是一种错误的方法,apple文档声明对于loadView方法,我们从来都不要手动直接调用,那么我们如何实现创建后对成员对象进行传值设置呢,iOS9中增加了这样一个方法: - (void)...我们可以把它连接到viewController2中的一个按钮上: ? 这样,当我们点击viewController2中的按钮时,就会返回到我们第一个ViewController1中了。...1、parentViewController UIViewController里面封装了一个数组,可以存放其子ViewController,系统中使用的例子就是导航和tabBar这类的控制器
MPMoviePlayerController MPMoviePlayerController支持MOV、MP4、M4V、3GP等常用格式的视频,它可以进行播放、暂停、停止、全屏的操作,虽然它是个视图控制器...它能够播放本地和网络视频,播放信息是通过通知发出的,我们只需要添加观察者,就能监听视频的播放状态。...而有时候我们的项目只需要全屏播放视频,不需要小屏播放,这时就可以用MPMoviePlayerViewController来实现了。...NSNotificationCenter defaultCenter] removeObserver:self]; } @end 效果图如下: 2403384-be54efdbc369bb32.png 播放控制器是在正常控制器上模态弹出的...,点击播放控制器左上角的Done按钮可退出播放控制器。
领取专属 10元无门槛券
手把手带您无忧上云