IOS UIViewController API,生命周期详解

在UIKit框架中只有一个根制图控制器。视图控制器用来管理界面和处理界面的类对象,程序启动前必须创建根视图控制器。所有视图控制器都需要自定义完成,必须继承于UIViewController 实现。xcode新创建的项目默认是通过info.plist 文件配置 main.storyboard 文件自动创建根视图ViewController。继承于UIView

创建根视图控制器
#import "AppDeletegate.h"
...code
- (void) didFinishLuanchingWithOptions:(NSDictionary *)luanchOptions {// 设置屏幕宽高self.window = [[UIWindow alloc] initWithFrame: [UIScreen mainScreen]];// 设置视图控制器为window根节点self.window.rootViewController = [[UIViewController alloc] init];
}
...code
自定义ViewController

#import "ViewController.h"
@implementation ViewController
// 当视图控制器第一次被加载显示视图
- (void) viewDidLoad{[super viewDidLoad];//创建子视图UIView *view = [[UIView alloc] init];view.frame = CGReactMake(0, 0, 300, 45);view.backgroundColor = [UIColor greenColor];// 加入视图[self.view addSubView:view];
}
@end
添加子视图控制器
#import "ViewController.h"
@implementation ViewController
// 当视图控制器第一次被加载显示视图
- (void) viewDidLoad{[super viewDidLoad];self.view.backgroundColor = [UIColor blueColor];
}
// 当屏幕被点击时候触发
-(void)touchesBegan:(NNSet<UITouch *> *)touches  withEvent:(UIEvent *)event{UIViewController *sonViewController = [[UIViewController alloc] init];[self presentViewController: sonViewController animate:YES complation:nil];
}
@end
API
  • (void)touchesBegan:(NNSet<UITouch *> *)touches withEvent:(UIEvent *)event 当屏幕被点击时候触发。
  • (void)presentViewController:(UIViewController *) animate:(BOOL) completion:(callbacl) 显示一个视图控制器到屏幕上,参数1:UIViewController 新的视图控制器对象,参数2:animate 是否开启动画效果,参数3:completion: 执行完成后的回调函数,不需要传nil即可。
  • (void)dismissViewControllerAniamted:(BOOL) completion:(callback) 使当前视图控制器在屏幕消失,参数1:animte 是否开启动画效果,参数2:completion 执行完成后的回调函数,不需要传nil即可。
  • (void)removeFromSuperView 将当前视图实例从父级删除
  • (void)bringSubViewToFront: UIView* 将一个子视图调整到最顶级绘制
  • (void)sendSubViewToBack: UIView* 将一个子视图调整到最低层绘制

生命钩子

  • (void)viewDidLoad 加载内存时候触发, 通常用于初始化子节点布局和资源使用
  • (void)viewWillAppear:(BOOL)animated 即将显示时候触发
  • (void)viewDIdLayoutSubviews 布局子组件完成时候触发
  • (void)viewWillLayoutSubviews 当渲染时候布局子组件触发
  • (void)viewDidAppear:(BOOL)animated 已经显示时触发
  • (void)viewWillDisappear:(BOOL)animated 即将消失时候触发
  • (void)viewDidDisappear:(BOOL)animated 消失时候触发
  • (viod) didReceiveMemoryWarning 当内存不足时候触发

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/563888.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

IOS 定时器 NSTimer

定时器对象,在OC中&#xff0c;定时器对象是NSTimer类型 //ViewController.h #import <UIKit/UIKit> interface ViewController: UIViewController {NSTimer *_timer; // 声明一个定时器对象int _time_num; } //ViewController.m #import "ViewController.h" …

冻结和只读取当前对象的属性,不读取对象原型的属性

Object.entries(obj) Object.entries()方法返回一个给定对象自身可枚举属性的键值对数组&#xff0c;其排列与使用 for…in 循环遍历该对象时返回的顺序一致&#xff08;区别在于 for-in 循环还会枚举原型链中的属性&#xff09;。 const object1 {a: somestring,b: 42 };fo…

IOS UISwitch 组件的使用

UISwtch 在许多场景中会使用到&#xff0c;通常用来坐设置开关等行为。下面我们来看一下IOS 中 UISwitch 等用法。注意&#xff1a;UISwitch 无法通过 frame 设置宽高 UISwitch* _switch [[UISwitch alloc] init];// 设置状态和开启动画[_switch setOn:NO animated:YES];// 设…

IOS 开发 UIProgress 和 UISlidre 进度条和滑动条组件

进度条和滑动条组件非常常见&#xff0c;在ios中进度条组件是无法响应事件的。滑动条可响应事件。但是这两个组件均不可设置高度&#xff0c;可设置x,y,width 进度条属性 名称类型说明默认值progressViewStyleUIProgressViewStyle进度条样式UIProgressViewStyleDefaultprogres…

OC 中数字转字符串和浮点数转整数等转换

浮点数转字符串 float value 0.2; NSString* text [[NSString alloc] initWithFormat:"%f", value];整数转字符串 int value 10; NSString* text [[NSString alloc] initWithFormat:"%d", value];NSInteger 转字符串 NSInteger value 10; NSString…

IOS ActivityIndicator 活动指示器使用

IOS中活动指示器的使用非常简单。 UIActivityIndicatorView* _activity [[UIActivityIndicatorView alloc] init];// 设置位置_activity.frame CGRectMake(180, 100, 80, 80);// 设置菊花样式[_activity setActivityIndicatorViewStyle:UIActivityIndicatorViewStyleLarge];/…

IOS 模态弹窗与操作版使用 UIAlertController

IOS8 以后UIAlertView 改用 UIAlertController 实现模态窗和操作板。UIAlertController 的使用与UIAlerView 非常不同&#xff0c;它实际上是把弹窗内容与显示方式、按钮列表、分离。实现起来非常简单。如下 1.调用静态方法创建弹窗控制器 alertControllerWithTitle 声明弹窗控…

IOS 单行文本输入框 UITextField 使用

UITextField 继承 UIControl 类&#xff0c;只支持单行输入和显示&#xff0c;可输入密码类型。支持实现代理 UITextFieldDelegate 属性 名称类型说明默认值textNSString文本输入值textColorUIColor文本颜色UIFontUIFont文本大小textAlignmentNSTextAlignment文本方向NSLeftTe…

OC 中NSString与NSString 的比较

OC 中 字符串是一个对象&#xff0c;所以不能使用 进行比较是否相等。因为两个字符串的内存地址可能不一样&#xff0c;但是内容一样。所以我们要使用其他方法进行比较运算。 isEqualToString if (["2121" isEqualToString:"2121"]) {NSLog("一致&q…

javascript 对象比较是否属于同一类型对象。

js属于动态类型语言&#xff0c;那么我们如何判断 A实例是否和 b对象实例属于同一类型呢&#xff1f;比如 array array &#xff0c;Error Error&#xff0c;自定义类的实例比较 等等对象类型判断。如果只用 typeof 肯定是不行的。因为不管 array 还是 object、error、或自定…

IOS UIScrollView 滚动视图的使用和文档

UIScrollView 是一个可滚动的视图列表&#xff0c;在app中非常常见。下面简单的介绍一下UIScrollView 的用法。可实现代理UIScrollViewDelegate // 实例化UIScrollViewUIScrollView* _scrollView [[UIScrollView alloc] init];// 获取屏幕大小UIScreen* screen [UIScreen mai…

css 开启硬件加速的系统级控件

css 开启硬件加速的系统级控件 1.h5在真机上有时候会出现滑动白屏问题&#xff0c;可以开启硬件加速系统级控件进行加速滑屏加速 body{-webkit-overflow-scrolling: touch;overflow: scroll; }2.h5开启动画硬件加速 div{transform: translate(0px); }

js 动态创建注释节点 createComment

const comment document.createComment(注释) document.body.appen(commnet)

解决 sessionStroage 无法在多个标签页共享数据的问题

1.改用 cookie 方式存储数据 2.利用 window.addEventListener(‘stroage’) 监听stroage变化事件进行回调共享数据 1.全局监听stroage事件 通过监听localStroage的数据变化进去读取出token值后进行localStroage删除 window.addEventListener(stroage, (e) > {if (e.stora…

PWA 应用提示安装到桌面

当web Service 和 Manifest 被浏览器安装完后&#xff0c;正常情况下&#xff0c;浏览器会提醒用户可将网页安装到桌面。但是通常浏览器都会限制提醒。这时候我们需要手动唤醒浏览器询问用户是否安装到桌面 beforeinstallprompt beforeinstallprompt 事件 window.addEventListe…

javascript 唯一值的集合 Set对象

Set对象允许存储任何类型的唯一值&#xff0c;无论是原始值还是对象引用。可用于数组&#xff0c;集合去重等操作&#xff0c;拥有size属性 const set1 new Set([1, 2, 3, 4, 5,4]);console.log(set1.has(1)); // expected output: trueconsole.log(set1.has(5)); // expected…

获取当前窗口是否可见 document.visibilityState

document.visibilityState document.visibilityState &#xff08;只读属性&#xff09;, 返回document的可见性, 即当前可见元素的上下文环境. 由此可以知道当前文档(即为页面)是在背后, 或是不可见的隐藏的标签页&#xff0c;或者(正在)预渲染.可用的值如下&#xff1a; vi…

空闲队列函数排队 requestIdleCallback

window.requestIdleCallback()方法将在浏览器的空闲时段内调用的函数排队。这使开发人员能够在主事件循环上执行后台和低优先级工作&#xff0c;而不会影响延迟关键事件&#xff0c;如动画和输入响应。函数一般会按先进先调用的顺序执行&#xff0c;然而&#xff0c;如果回调函…

前端模式 VD, 脏检查 MVVM ,数据收集 MVVM 所使用的场合

VD 虚拟DOM 数据变化&#xff0c;先修改虚拟DOM层&#xff0c;然后通过虚拟DOM树的对比检查获取出最小的修改量进行对真实DOM树进行修改。虚拟DOM模式只是在DOM层的检查&#xff0c;所以初始渲染速度非常快。在细小修改的大量数据修改都是速度也不错的。因为只是在虚拟DOM层的计…

指数随机变量 泊松过程跳_如何深刻的理解随机变量

大多数学校的统计学悲剧在于它是多么愚蠢。老师们花费数小时来研究导数&#xff0c;方程式和定理&#xff0c;当您最终达到最佳效果时&#xff08;将概念应用于实际数字&#xff09;&#xff0c;就会出现一些无关紧要&#xff0c;没有想象力的示例&#xff0c;例如掷骰子。遗憾…