之前用navigationcontroller都是直接往storyboard里拖一个控件,这次实训做app打算用纯代码根据设计者设计的宽高设置一个navigationbar。但是看了其他页面后,发现其他页面的navigationbar都是正常的84高度,只有一个页面需要调整navigationbar的高度,这就需要viewwillappear方法。在平常自定义类时,都会有viewdidload方法,所以就了解了一下所有与view生命周期有关的方法。

与此相关的方法有viewdidload、viewwillappear、viewdidappear、viewwilldisappear、viewdiddisappear、viewwillunload和viewdidunload方法。他们分别的作用是:

viewDidLoad-加载视图

viewWillAppear-UIViewController对象的视图即将加入窗口时调用;

viewDidAppear-UIViewController对象的视图已经加入到窗口时调用;

viewWillDisappear-UIViewController对象的视图即将消失、被覆盖或是隐藏时调用;

viewDidDisappear-UIViewController对象的视图已经消失、被覆盖或是隐藏时调用;

viewVillUnload-当内存过低时,需要释放一些不需要使用的视图时,即将释放时调用;

viewDidUnload-当内存过低,释放一些不需要的视图时调用。

这些方法的用法通过其名字基本可以分析出来。

viewDidLoad方法是用于初始化的,视图加载时会用到,即controller加载了视图之后才会调用此方法。它负责视图数据部分的初始化,所以一般将对视图的一些更改,如背景颜色等都放在这个方法中。init方法加载程序,在下一次调用此视图时,就不会调用init方法,而是调用viewdidload方法,所以对视图属性的设置都应该放在viewdidload中,这样即使加载时内存过低导致第一次加载时无法加载出相应的背景颜色等,在下一次加载时调用这个方法也会再加载出来。

viewWillAppear方法调用时,视图可能还没被加载;  viewDidAppear方法是用来触发视图已经完全加载到屏幕上之后的事件,比如某种动画。

override func viewWillAppear(_ animated: Bool) {super.viewWillAppear(true)self.navigationController?.navigationBar.frame = CGRect(x: 0, y: 20, width: screenwidth, height: 44)self.navigationController?.navigationBar.setTitleVerticalPositionAdjustment(-40, for: UIBarMetrics.default)}

viewdidunload方法是内存紧张的时候调用的,可以释放view以及view的对象,是viewdidload的对立函数。从网上了解到的是这样的:

在该方法中释放其他与view有关的对象、其他在运行时创建(但非系统必须)的对象、在viewDidLoad中被创建的对象、缓存数据等 release对象后,将对象置为nil(IBOutlet只需要将其置为nil,系统release view时已经将其release掉了)。一般认为viewDidUnload是viewDidLoad的镜像,因为当view被重新请求时,viewDidLoad还会重新被执行。viewDidUnload中被release的对象必须是很容易被重新创建的对象(比如在viewDidLoad或其他方法中创建的对象),不要release用户数据或其他很难被重新创建的对象。

view的生命周期(实训)相关推荐

  1. View的生命周期方法和Activity生命周期方法关系

    View 是在Activity 中使用到的,所以在自定义View的时候,我们需要了解Activity 生命周期方法和View的生命周期方法调用先后顺序.  见如下图 (1) 在Activity onC ...

  2. Android开发——View的生命周期总结

    0.前言 今天看到一个概念是View的生命周期,有点懵逼,听说过Activity的生命周期,Fragment的生命周期,对View的生命周期好像没什么概念啊.难道layout.draw这些也算是生命周 ...

  3. android生命周期_Android开发 View的生命周期结合代码详解

    咱们以TextView控件为例: /** * Created by SunshineBoy on 2020/9/23. */ public class TestTextView extends and ...

  4. swift 生命周期_iOS View的生命周期详解

    View的生命周期流程图 方法详解 loadView:每次访问view时,就会调用self.view的get方法,在get方法中判断self.view==nil,不为nil就直接返回view,等于ni ...

  5. iOS代码质量要求_苹果发布 iOS amp; iPadOS 13.1 beta 4 版本;Dart 2.5正式公布;SwiftUI View的生命周期...

    2019-09-19 由于文章内链接无法直接跳转,可点击左下方"阅读原文"查看相关链接 关键词:Dart 2.5.CTR 苹果发布 iOS & iPadOS 13.1 be ...

  6. Android自定义View探索—生命周期

    Activity代码: public class FiveActivity extends AppCompatActivity {private MyView myView;@Overrideprot ...

  7. 视图view的生命周期的一点见解

    转载于:https://www.cnblogs.com/521it/p/4966920.html

  8. 控制器view生命周期

    控制器View的生命周期方法:只要是控制器的生命周期方法,都是以view开头. 控制器View加载完成时调用 - (void)viewDidLoad { [super viewDidLoad]; } ...

  9. 控制器view及UIApplication的生命周期

    一.控制器View的生命周期: /*** view加载完毕*/- (void)viewDidLoad{[super viewDidLoad];NSLog(@"ICKOneViewContro ...

最新文章

  1. Android Popwindow 使用
  2. 来谈下高并发和分布式中的幂等处理
  3. 51NOD 1424 零树
  4. UVA - 10168 Summation of Four Primes(哥德巴赫猜想)
  5. 音视频技术开发周刊 90期
  6. EXCHANGE 2010 DAG 实验总结
  7. python实现矩阵叉乘_矩阵乘法的纯Python实现 | 离开Python库!!
  8. nltk安装punkt等语料库时报SSL错误完美解决方案及离线安装方法
  9. Guava入门~Charsets
  10. 训练和测试数据的观察
  11. DIY制作otto机器人
  12. Java selenium 获取表格数据_Java+Selenium 如何参数化验证Table表格数据
  13. SpringBoot继承LogStash实现日志收集
  14. SVN回滚至某个版本
  15. MFC 视频播放器实现局部放大功能
  16. 洛谷P4121 [WC2005]双面棋盘(线段树套并查集)
  17. 轴承故障诊断和分类的系统 matlab GUI
  18. 文件上传服务器方法,向服务器上传文件方法
  19. java Io,读写文件拒绝访问
  20. VisualSVN 5.1.7破译License Key

热门文章

  1. 飞机复合外壳的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  2. 计算机科学与技术江苏分数线,南通大学计算机科学与技术专业2016年在江苏理科高考录取最低分数线...
  3. sap 获取计划订单bapi_SAP 生产模块常用BAPI
  4. 函数 RFC 函数 BAPI
  5. mysql 微信昵称怎么保存_mysql 微信用户昵称emoji 完整保存
  6. 双电阻差分电流采样_差分信号和差分电路讲解 差分放大电路应用
  7. 怎样下载安装python编程软件视频_程序员如何利用Python下载视频?几串代码轻松搞定...
  8. python树莓派经典书籍推荐_树莓派教程书籍推荐:带你玩转Raspberry Pi
  9. [附源码]JAVA+ssm基于JAVA宠物店管理系统(程序+Lw)
  10. 南京林业大学试卷(B)