iOS StoryBoard的转场Segue解读
来源:互联网 发布:淘宝囤货小当家 编辑:程序博客网 时间:2024/05/17 10:04
本文参见美国斯坦福大学swift视频,并有所引用原文,特此声明
未完待续
在storyboard中,官方提供了多种转场方式,如图:
其含义如下:
1. Show 选项只会在一个导航控制器中用到
2. Show detail 是用于一个分屏控制器或者一个混合设置的,也就是有时你在分屏视图,有时你在导航视图
3. Present Modally 将占满整个屏幕然后展示这个新的 MVC
4. Present As Popover 选项将会把正在 segue 的东西展示在一个小的在最顶级的弹窗中
5. push 以及modal已经被遗弃了
一个控制器的出现的详细生命周期:
override func loadView()override func viewDidLoad()override func viewWillAppear(_ animated: Bool)override func updateViewConstraints()override func viewWillLayoutSubviews()override func viewDidLayoutSubviews()override func viewDidAppear(_ animated: Bool)
一个控制器的消失的详细生命周期:
override func viewWillDisappear(_ animated: Bool)override func updateViewConstraints()override func viewWillLayoutSubviews()override func viewDidLayoutSubviews()override func viewDidDisappear(_ animated: Bool)
为了验证这个东西,我写了如下代码测试:
override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) print(#line) } override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) print(#line) } override func viewDidLayoutSubviews() { super.viewDidLayoutSubviews() print(#line) } override func viewDidDisappear(_ animated: Bool) { super.viewDidDisappear(animated) print(#line) } override func viewWillLayoutSubviews() { super.viewWillLayoutSubviews() print(#line) } override func viewWillDisappear(_ animated: Bool) { super.viewWillDisappear(animated) print(#line) } override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) { super.viewWillTransition(to: size, with: coordinator) print(#line) } override func loadView() { super.loadView() print(#line) } override func loadViewIfNeeded() { super.loadViewIfNeeded() print(#line) } override func updateViewConstraints() { super.updateViewConstraints() print(#line) } override func viewDidLoad() { super.viewDidLoad() print(#line) }
从而得出生命周期如上: 所以我们不能再viewdidload中设置任何有关于几何计算的东西,因为约束还没有建立起来,建议在viewdidappear中设置这些。
在没有navigationcontroller时:
原图:
转场为 – show、show detail、Present Modally、Present As Popover的图层分析:
这时候没有办法返回,需添加返回按钮,通过dismiss,由底部向上推出新的mvc,在iphone中测试并未发现不同。
但是当iphone横屏放置时:
会出现如图所示的状况,这个稍后解释。
此外当我们点击跳转时,捕获函数为:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) { print("-----2222-----") }
我们可以通过上述方法来获知,UIStoryboardSegue 以及sender
UIStoryboardSegue: 这里有我们需要的属性
open var identifier: String? { get } open var source: UIViewController { get } open var destination: UIViewController { get }
关于如何解决可选值 — optional?
if let name = Person().name {//如果Person().name为空,则不会进行此步}else{}
由于在swift中可以通过?来指定可选值,所以我们可以通过此方法来解除这种为空的情况。当然更好的办法是可选值为空时设置为特定值,如:
if let name = Person().name ?? "quinn" { //如果Person().name为空,则赋值 "quinn"}
在iPhone中并没有分屏控制器(splitcontroller)只存在与ipad以及横屏状态下的5.5寸iphone上。关于这个你可以查看斯坦福大学的视频。那个教授演示了这个。
- iOS StoryBoard的转场Segue解读
- IOS 9 支持的转场类型(segue)
- ios-Storyboard Segue
- ios-storyboard-利用segue传参
- ios 两种方法实现转场segue
- iOS自定义segue和自定义segue转场动画
- Storyboard-segue的使用
- storyboard的segue返回方法
- [iOS8][Segue转场]转场返回无法绑定的解决办法
- IOS Storyboard中使用Segue传值
- IOS Storyboard中使用Segue传值
- IOS Storyboard中使用Segue传值
- Storyboard转场
- ios basic:1.3 storyboard(学习autolayout的使用和multiple scenes之间的segue)
- [ios] Storyboard里面的几种Segue区别及视图的切换
- 使用storyboard的segue控制界面跳转
- 关于storyboard 的segue返回方法
- 使用storyboard的segue控制界面跳转
- Oracle PO全过程/标准流程及分析
- springboot TestNg (一) 环境准备与Helloword
- 关于oracle 检查点队列 脏块的理解
- 区块链BTC98比特币Bitcoin源代码安装编译
- tensorflow添加自定义的auc计算operator
- iOS StoryBoard的转场Segue解读
- JMS学习笔记(二)——使用JMS发送和接受text、Map、Object类型的消息
- 《JavaFx 开发教程》之 环境搭建
- Temporal Action Detection (时序动作检测)方向2017年会议论文整理
- nginx二 之负载均衡搭建
- $.ajax()方法详解
- 如何在mac上安装android sdk
- Java简易五子棋
- 几种常见的JAVA日志框架的简单介绍