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

iOS翻页视图控制器UIPageViewController的应用

iOS翻页视图控制器UIPageViewController的应用 一、引言     UIPageViewController是iOS中少见的动画视图控制器之一,通过它既可以创建类似UIScrollView...上图中,UIPageViewControllerDataSource协议为UIPageViewController提供数据支持,DataSource协议提供的数据来自各个ViewContoller自行维护...UIPageViewController把从DataSource中获取到的视图数据渲染给View用于当前视图控制器的展示。...; //向后翻页展示的ViewController - (nullable UIViewController *)pageViewController:(UIPageViewController *)pageViewController...,可以通过返回值重设书轴类型枚举 - (UIPageViewControllerSpineLocation)pageViewController:(UIPageViewController *)pageViewController

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

    iOS-UIPageViewController实现分页控件

    UIPageViewController的两个数据源代理即可 func pageViewController(_ pageViewController: UIPageViewController, viewControllerBefore...viewController: UIViewController) -> UIViewController?...,这样就很容易计算出错 所以我们把页面存储在显示的页面中,这样当需要翻页时,再取出当前页面的页码,再计算下一个界面的页码 那么我们怎么将当前的页码赋值给全局变量呢?...可以通过下面的代理 func pageViewController(_ pageViewController: UIPageViewController, didFinishAnimating finished...,然后再通过当前的页码来控制标题的变化,这样一个简单的分页控件就完成了 Demo地址:https://github.com/cdcyd/CommonControlsCollection 我的博客即将搬运同步至腾讯云

    94430

    UIPageViewController电子书翻页效果

    横向.gif 纵向.gif 上面的效果主要是用到了UIPageViewController,http://www.jianshu.com/p/a676899d9b70 这篇文章讲的挺细的 ,对于中间的图片嵌入效果想了解的可以查看我以前写的内容...为当前正在显示的VC控制器 return 的ViewController为将要显示的VC控制器 */ //向前翻页执行 - (nullable UIViewController *)pageViewController...:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController...{} //向后翻页时执行 - (nullable UIViewController *)pageViewController:(UIPageViewController *)pageViewController...,我们可以在这个代理中进行一些后续操作 - (void)pageViewController:(UIPageViewController *)pageViewController didFinishAnimating

    2.4K90

    新闻类App顶部菜单栏封装

    菜单栏使用UICollectionView,VC控制使用PageViewController。 这样做的目的是为了完全复用,支持无限扩展。因为菜单栏是collectionView,所以不怕内存爆掉。...VC的控制使用PageViewController,好处是滑动的时候可以懒加载,只有用户浏览的时候才会实例化并缓存起来。...解决方案是,将cell的坐标转化到collectionView上,然后让下划线的中心点和cell在collectionView上中心点保持一致 if let currentCell = collectionView.cellForItem...topBar.pageViewScroll(nextIndex: nextIndex, progress: progress) } } 如何使用...风格控制类SegmentTopBarStyle 数据源[SegmentItem] 自定义VC必须实现ChildViewControllerProtocol协议,协议中初始化方法可以按需修改,增加参数。

    1.1K20

    小说阅读器的设计和实现

    通过整理以上功能,我们可以把整个阅读器的功能分为几个方面: 1、数据处理:将原书籍数据进行处理,得到能够展示的文本以及相应的目录数据; 2、文本展示:用CoreText处理文本,将其划分为多页数据,...阅读器的排版基于CoreText,通过章节文本数据SSChapterData和用户设置SSConfigData,可以生成带格式的富文本NSAttributeString;通过CoreText将富文本转化成多个...1、CTLine CTFrameRef是我们生成的排版数据,通过CTFrameGetLines这个函数可以拿到NSArray数组,第0个元素是第1行,根据行数可以获取到CTLineRef; CTFrameGetLineOrigins...- (void)pageViewController:(UIPageViewController *)pageViewController didFinishAnimating:(BOOL)finished...3、翻页数据异常 UIPageViewController在翻页的时候会请求下一页数据,我们通过UIViewController封装好对应的数据和视图,直接回传一个VC; 但是当用户频繁滑动并在滑动动画未完成就触发点击进入下一页的逻辑时

    4.1K20

    浅谈MVC

    以往的开发经验表明,一个如此简单的数据传递处理,不值得用此“牛刀”。 于是渐渐有了用一个ViewController管理多个View的想法。...到网上搜了一把,看了Apple推荐的关于一个ViewController管理多个View的设计方式——同层子View建议用同一个ViewController来管理——真有种相见恨晚的感觉。...一旦这样设计,数据交换逻辑就简单多了,可以将所有网络请求都在一个ViewController中集中处理,各个子视图只管各自子控件的布局、显示。...另外,对于第二个法子,因为处理逻辑集中,必然会使这个ViewController.m文件代码量很大,可以尝试使用Catalog将代码分拆,不同子View的事件逻辑用不同的Catalog类实现;这样ViewController.m...在MVC中,似乎数据流转到M就停止了(虽然也有很多基于服务端数据的APP应用),这是因为客户端数据量相对更少,客户端系统是以功能为中心的,相较于数据是什么,用户更关心数据是如何呈现的(或者叫数据的流转方式

    95020

    怎样使用 iOS 7 的 AVSpeechSynthesizer 制作有声书(1)

    在 Siri 刚開始出现的时候,苹果以前用复杂的动态文本阅读将开发人员拒之门外,但当iOS7 公布的时候,苹果最终放开了这扇大门。 在本教程中,你将制作一本故事书。...当你制作自己的有声书时, 你将学习到: 怎样使用 AVSpeechSynthesizer 和 AVSpeechUtterance 让 iOS 设备朗读文本 How to make this synthesized...Models: 用于存放书籍的内容,它是page 的集合。 2. Presentation: 将 models 展现到屏幕并响应用户动作(比如滑动手势)。...当视图载入完毕,设置要显示的 page,并增加滑动手势的识别器以便用户能通过手势进行翻页。 返回当前页的 RWTPage 对象。 设置 book 属性并将当前页置为第一页。...能够将 ViewController 中定义的AVSpeechSynthesizer 对象想象成一个会说话的人。而 AVSpeechUtterance 则能够想象成一张小纸条。

    96730

    iOS中storyboard故事板使用Segue跳转界面、传值

    使用Segue实现页面跳转: 要在故事板中使用Segue跳转,非常的简单和方便,把鼠标移到第一个视图的按钮上,按住鼠标右键不放,拖动鼠标到第二个视图,松开,然后会出现一个选项框,这里是要选择Segue的模式...在Page2的视图控制器中,把按钮关联到Page2ViewController中去,然后编辑按钮的响应方法: - (IBAction)toPage1:(id)sender { [self dismissViewControllerAnimated...使用Segue在界面间传值: 我们在两个视图中都添加了TextField编辑输入框,这样我们可以在Page1的页面中输入数据来传递到Page2显示,同样的可以在Page2中输入数据回到Page1显示。...我们传值有两种方式,正好在两个传输过程中使用,先看第一个方法,实现从Page1传值到Page2: 我们先在Page2中定义一个变量用来接收所传递的值: // Page2的.h文件中 @property...@"Page2ViewController"]) {// string值为在Segue属性Identifier处设置的值 // 相应处理 } 现在,运行工程,在第一个界面输入值后,点击跳转到第二个界面

    1.5K20

    【IOS开发基础系列】Storyboard专题

    但在某些时候我们必须通过手动创建TabbarController,这样就必须知道在不使用模板时应该如何去做。         ...将第二个 ViewController 的TabBarItem 重命名为Gestures。         我们还可以在 Tab 上放入图片。在本教程源代码中有一个文件夹Images。...不要奇怪,我们还没有提供数据源,因此表视图中不会显示任何行。 2.3.3 创建PlayersViewController         加一个新的 File 到项目中。...通过 AutoLayout 可以实现运行时根据设备实际屏幕大小调整控件位置和大小。 4.2 代码实例化故事板中的VC 如何装载Storyboard中的ViewController?...Storyboard全解析 http://www.cnblogs.com/jy578154186/archive/2013/02/27/2934853.html 使用storyboard实现页面跳转,简单的数据传递

    1.3K30

    分布式 | 如何通过 dble 的 split 功能,快速地将数据导入到 dble 中

    大家可以考虑这样一个场景:一份原始数据通过 mysqldump 工具 dump 下了一个sql文件(下称“dump文件”),正常情况下,这个 dump 文件也不会太小,直接拿着这个 dump 文件通过...那当我拿到 dump 文件后,就只能通过直连 dble 业务端导入数据才能实现历史数据的拆分和导入吗?...dump 子文件,就可以直接导入到各自分片对应的后端 MySQL 中,当完成后端数据的导入操作后,只需要再同步一下 dble 的元数据信息,这样就完成了历史数据的拆分和导入。...接着可以: 获取3组测试各自导入数据的耗时 查看10张 table 各自的总行数在3组测试中是否完全一致,其中对照组2和实验组(即直连 dble 执行的导入和 split 执行的导入),则可以通过 dble...split 的导入速度达到98G/h。 导入正确性对比:通过 split 导入数据的方式和通过直连 dble 业务端导数据的最终结果是一致的。

    76340

    iOS开发--一步步教你彻底学会『iOS应用间相互跳转』

    原理:通过设置跳转到应用B的URL Schemes(自定义的协议头),应用B将其自身“绑定”到一个自定义URL Schemes上,就可以从应用A中利用应用B的URL Schemes启动应用B了。...比如我们在浏览网页时,会有分享到微信朋友圈或是分享给微信朋友,这就需要跳转到微信朋友圈界面或是微信朋友选择界面。 具体如何做呢? 首先我们先来为App-B搭建两个页面Page1和Page2。...这里用导航控制器Push两个ViewController,通过Storyboard Segue设置两个ViewController的标识符绑定,分别为"homeToPage1"和"homeToPage2...是分割符; AppA是跳转回的应用App-A的URL Schemes 我们根据传递来的数据,进行反跳回去。 之前我们在应用App-B中通过AppDelegate执行不同页面的跳转。...添加Page1和Page2的页面控制器Page1ViewController和Page2ViewController 2. 实现步骤 在App-A中修改传递的URL。 分别修改为:@"AppB://?

    1.4K30

    大前端开发中的路由管理之四:iOS篇

    层中所进行的创建或修改数据的操作,通过Controller对象传达出去,最终会创建或更新Model。...Model更改时(例如通过网络连接接收到新数据),它会通知Controller对象,Controller对象更新相应的View对象。...2、Controller 的页面管理         上文提到,iOS中通过Controller(控制器)来管理View的绘制逻辑,那么具体是如何实现的呢?         ...容器类ViewController都是通过持有一个ViewController的数组来管理,一般来讲UINavigationController是通过先进后出(First In Last Out)的方式来管理...根据官方的文档,UINavigationController每次只会展示一个ViewController的View,每次进入到一个View的时候会push这个ViewController到navigation

    1.9K40

    iOS中的「回调(callback)」

    没有自己亲自实现过委托、通告、Block进行回调(传递数据)的朋友; 先用一张图总结本文 ?...——摘自《Object-C Programming:The Big Nerd Ranch Guide 2nd》P613 解读如下: callback(回调)就是一段「代码」,我们会通过某种途径,将这段「...上述例子可以这样说:「当成功连接8个蓝牙设备后,向遵守MyCnetralManagerDelegate协议的ViewController对象发送allDevicesDidConnected:消息(并传递一个参数...如果有这个疑问,可以移步到我在知乎回答的问题:如何用简单明了的话解释一下什么是 Objective-C 中的委托?或许可以解答你的部分疑问。...上面这个例子,可以说成:「当成功连接8个蓝牙设备后,向通告中心发布kNotificationAllDevicesDidConnected通告(一个字符串),并通过userInfo(一个字典)这个参数传递设备的数量

    3.5K30

    iOS对UIViewController生命周期和属性方法的解析

    iOS对UIViewController生命周期和属性方法的解析 一、引言         作为MVC设计模式中的C,Controller一直扮演着项目开发中最重要的角色,它是视图和数据的桥梁,通过它的管理...,将数据有条有理的展示在我们的View层上。...iOS中的UIViewController是UIKit框架中最基本的一个类。从第一个UI视图到复杂完整项目,都离不开UIViewController作为基础。...,这里面有一点需要我们注意,如果我们需要向controller中视图进行传值设置,通过以下方法得到的Controller中,视图还没有被初始化创建出来:  ViewController2 * viewController2...,在一个上面添加一个按钮,点住按钮按住control,将鼠标拉到第二个controller上,会出现如下的跳转选项: ?

    3K20
    领券