iOS视图控制器转场

作者: 飞鱼非鱼会飞 | 来源:发表于2016-05-29 15:46 被阅读305次

iOS官方转场原理

iOS开发里肯定少不了各种转场,切换控制器视图.但有时候我们想自己写点比较绚丽的效果的转场,这时候我们就需要了解苹果官方转场的原理了.看了大神们的博客,希望自己用最口述话的语言来说一说让自己印象更深刻一下.


(1)转场是什么意思,其实就是控制器视图的切换.转场需要做什么呢?无非就是把第一个控制器的视图移除视线,把第二个试图控制器的视图显示出来.中间加上我们需要的动画效果.以后我们把第一个控制器叫做fromVC,第二个叫做toVC.

(2)根据苹果的规则,我们会安排一下几个角色完成转场.1.动画控制器2交互控制器3,转场代理4.转场上下文5.转场容器.这些角色里转场上下文起到特别重要的数据源和处理作用.

(3)我们讲讲他们5个怎么配合的,首先转场容器是相当于父容器把要fromVC和toVC管理起来,一开始fromVC在转场容器里,容器想我该怎么转场啊,这时候转场代理来了,说我给你提供转场动画,还可以帮你解决交互.但是你得把要切换的东西给我.要不然我巧妇难为无米之炊啊.转场容器说好的.我把一切东西都给了转场上下文,你去向它要.然后,转场代理转场上下文那里拿到数据,给动画控制器说,东西都在这了,你给我做好看点.给交互控制器说东西也给你了,让手势动画控制器都去配合你,把工作做好.这是他们的关系.

(4)需要特别注意的是,角色的实现,苹果都给了需要的协议,就是说苹果官方,已经告诉我们,这几个角色应该要办什么事做什么工作才能称职.动画控制器需要遵守的<UIViewControllerAnimatedTransitioning>这个协议需要我们实现

1.动画的时间.

2.动画的效果.

交互控制器需要实现的<UIViewControllerInteractiveTransitioning>这个协议需要我们实现.

1.更新动画的进程.

2.完成转场.

3.取消转场.(因为交互转场中途可能取消,比如你划了一半不划了)

转场代理实现的方法就是提供动画控制器交互控制器,苹果也提供代理了,有<UITabBarControllerDelegate><UINavigationControllerDelegate><UIViewControllerTransitioningDelegate>

转场上下文需要实现的方法就比较多了,苹果也给出了一套协议帮助我们<UIViewControllerContextTransitioning>方法有14个.

1返回转场容器视图

2是否支持动画

3是否支持交互

4是否取消了转场

5转场的模式

6更新转场进度(用在交互转场中)

7完成交互转场

8取消交互转场

9转场结束

10获取转场控制器

11获取转场控制器视图

12目标转换

13开始frame

14结束frame

(5)转场可以说是分为两类,一类是UINavigationController切换和UITabBarController切换,另一类是modal切换.他们最大的不同是,前者,提供容器UINavigationController/UITabBarController,切换视图的时候把fromVC及视图移除,把toVC及视图添加进来.而modal切换,fromVC和toVC是UIKit进行管理的.在present的时候fromVC视图并没有移除原来的视图结构,所以在dismissal时也不用再加进来.

这里只是我只是大概说一下自己的理解,比较具体的实现机制,可以看看代码.

前人写的swift版的Demo,这里是我充当搬运工做的OC版本的Demo

相关文章

  • iOS 视图控制器转场详解

    iOS 视图控制器转场详解

  • iOS视图控制器转场

    iOS官方转场原理 iOS开发里肯定少不了各种转场,切换控制器视图.但有时候我们想自己写点比较绚丽的效果的转场,这...

  • 侧滑的转场实现

    学习了seedante大神的《iOS 视图控制器转场详解》https://github.com/seedante/...

  • 自定义视图控制器转场动画[译]

    iOS动画教学:自定义视图控制器转场动画 Note from Ray:这是从iOS Animations by T...

  • 自定义视图控制器转场动画

    iOS 提供了一些视图控制器转场动画(transition animation),如push、pop、presen...

  • 视图生命周期

    视图的创建 视图的生命周期 转场动画 自己封装的转场动画 容器视图控制器

  • iOS7之转场动画

    iOS7添加了转场动画,让我们更加方便的切换控制器。 iOS7 SDK支持两种自定义过渡:自定义视图控制器过渡和交...

  • iOS-自定义转场动画

    从iOS 7开始,自定义转场动画变得非常方便,无论是以模态形式呈现视图控制器,还是使用导航控制器或是选项卡...

  • iOS 视图控制器转场

    概述 转场的本质:下一场景的视图替换当前场景的视图,以及相应的控制器(VC)的替换,表现为当前当前试图消失和下一视...

  • iOS转场动画

    iOS自定义转场动画 首先介绍下iOS转场动画控制相关API 动画控制器 (Animation Controlle...

网友评论

    本文标题:iOS视图控制器转场

    本文链接:https://www.haomeiwen.com/subject/xshzrttx.html