Swift 4.0 + Ipad开发项目中值得注意知识点
1.注意Xib的约束和代码的约束,注意适配问题;
2.设置view的frame可以使用view.frame.maxX实现布局;
3.UIStackView在xib中的使用,可以很好的实现约束,布局和屏幕适配;
4.viewDidLoad和viewWillLayoutSubviews写view.frame区别:
这个就涉及到控制器的生命周期问题:
ARC环境
- 单个viewController的生命周期
- initWithCoder:(NSCoder *)aDecoder:(如果使用storyboard或者xib)
- loadView:加载view
- viewDidLoad:view加载完毕
- viewWillAppear:控制器的view将要显示
- viewWillLayoutSubviews:控制器的view将要布局子控件
- viewDidLayoutSubviews:控制器的view布局子控件完成
这期间系统可能会多次调用viewWillLayoutSubviews 、 viewDidLayoutSubviews 俩个方法 - viewDidAppear:控制器的view完全显示
- viewWillDisappear:控制器的view即将消失的时候
这期间系统也会调用viewWillLayoutSubviews 、viewDidLayoutSubviews 两个方法 - viewDidDisappear:控制器的view完全消失的时候
- 多个viewControllers跳转
- 当我们点击push的时候首先会加载下一个界面然后才会调用界面的消失方法
- initWithCoder:(NSCoder *)aDecoder:
ViewController2(如果用xib创建的情况下) - loadView:
ViewController2 - viewDidLoad:
ViewController2 - viewWillDisappear:ViewController1 将要消失
- viewWillAppear:
ViewController2将要出现 - viewWillLayoutSubviews
ViewController2 - viewDidLayoutSubviews
ViewController2 - viewWillLayoutSubviews:ViewController1
- viewDidLayoutSubviews:ViewController1
- viewDidDisappear:ViewController1 完全消失
- viewDidAppear:
ViewController2完全出现
- 小结:
-整个控制器声明周期: viewDidLoad -> viewWillAppear -> viewWillLayoutSubviews -> viewDidLayoutSubviews -> viewDidAppear -> viewWillDisappear -> viewDidDisappea
5.UIView的setNeedsDisplay和setNeedsLayout方法:
就可以 处理子视图中的一些数据。
综上所诉,setNeedsDisplay方便绘图,而layoutSubViews方便出来数据。
Swift 4.0 + Ipad开发项目中值得注意知识点的更多相关文章
- AOP在大规模软件开发项目中的应用(图)
AOP在大规模软件开发项目中的应用(图) 本文的写作源于一个真实的大型软件开发项目,我们努力尝试在这个项目中推广应用AOP.在此我们将对曾经面临过的一些实际问题与困难进行分析,试图引发关于面向方面软件 ...
- angular+ionic前后端分离开发项目中的使用
Ionic基于AngularJS构建而成,所以学习一些AngularJS的知识很有必要.Ionic并没有独立开发一套完整的Web应用框架,而是对AngularJS进行了扩展,给它添加了大量界面组件和其 ...
- windows linux hosts文件的配置,开发项目中域名跳转等。
我们通常都知道Windows中hosts文件(C:\Windows\System32\drivers\etc),用来映射域名的.linux上当然也有,一般在/etc/hosts下. 当工作的项目,在开 ...
- iOS10.0 & Swift 3.0 对于升级项目的建议
iOS & Swift新旧版本更替, 在Apple WWDC大会开始之际, 也迎来了iOS 10.0, Swift 3.0 测试版, 到目前为止, 已经是测试版2.0, 每次更新都带来了新的语 ...
- Ioc依赖注入:Unity4.0.1 在项目中的应用 (MVC和API)
使用Unity的好处网上有很多,百度一下即可 这里引用了一篇关于面向接口编程的好处的文章作为引申:https://blog.csdn.net/Cyy19970527/article/details/8 ...
- vue2.0从头开发项目管理系统
1.自己的github建一个项目. 2.本地vue2.0项目初始化. 安装node.js,检查node版(node -v). 安装webpack(npm install webpack -g),检查w ...
- salesforce零基础学习(七十二)项目中的零碎知识点小总结(一)
项目终于告一段落,虽然比较苦逼,不过也学到了好多知识,总结一下,以后当作参考. 一.visualforce标签中使用html相关的属性使用 曾经看文档没有看得仔细,导致开发的时候走了一些弯路.还好得到 ...
- salesforce零基础学习(八十八)项目中的零碎知识点小总结(二)
通过做项目以及群里面的一些大神的聊天,总结一下关于项目中的两个知识点,以后当做参考. 一. 在custom setting中配置集成接口信息后刷sandbox的问题 我们做项目时,经常会遇见和其他平台 ...
- salesforce零基础学习(一百零三)项目中的零碎知识点小总结(五)
本篇参考:Salesforce Admin篇(四) Security 之Two-Factor Authentication & Single Sign On https://developer ...
随机推荐
- [TypeScript] Optional Chaining with TypeScript 3.7
TypeScript 3.7 adds support for optional chaining. This lesson shows you how to use it in your code ...
- C语言中【变量】的存储类型共有4种类型
在C语言中,对变量的存储类型说明有以下四种: auto 自动变量 (动态存储) register 寄存器变量(动态存储) extern 外部变量(静态存储) ...
- C语言 选择排序算法原理和实现 从数组中 找出最小的元素然后交换位置
#include <stdio.h> int main(void) { /* 选择排序算法 原理:从数组中 找出最小的元素然后交换位置: */ int a[10] = {9,5,10,7, ...
- 2017.10.5 国庆清北 D5T2 整除
80分暴力 /*找规律80分TLE俩点 忘了啥规律了. */ #include<iostream> #include<cstdio> #include<cmath> ...
- PCI BAR设置过程[转]
最近因为工作需要用到pci设备的BAR内容,之前看了没深刻印象,这里整理一下. PCI设备有很好的可配置型和易操作性,这很大方面要归功于其地址空间的可动态分配的特性.而动态分配地址空间就是依赖于BAR ...
- TCP协议怎么工作的?
三次握手过程: 第一次 第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认:SYN:同步序列编号(Synchronize Sequence N ...
- Java中判断数组是否为空
一维数组// 一维数组: int[] arrayif(array == null || array.length == 0) return true; 二维数组//二维数组: int[][] a ...
- OSPF外部实验详解
- [转载] 浏览器Browser对同域名下的请求并发数量
原文链接:https://blog.csdn.net/a562550212/article/details/79552713 另附原文作者贴的一个知乎地址,几个答主讲的非常好 https://www ...
- 和小哥哥一起刷洛谷(7) 图论之dijkistra算法
关于dijkstra 维基百科 戴克斯特拉算法(英语:Dijkstra's algorithm,又译迪杰斯特拉算法)由荷兰计算机科学家艾兹赫尔·戴克斯特拉在1956年提出.戴克斯特拉算法使用了广度优先 ...