代码编织梦想

在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 当内存不足时候触发

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/qq_33490514/article/details/111115982

IOS UIWindow 和 UIScreen-爱代码爱编程

通常UIWindow 与 UIScreen 是配合使用的。当我们想自定义window对象或者获取硬件屏幕大小必定会用到 UIWindow 和 UIScreen UIWindow 一个APP只有一个UIWindow 对象,表示当前窗口对象。UIWindow 继承于 UIView。 通常使用Window 自定义根节点的 UIViewControl

ios 升级后,滚轮选择的时间控件失效 UIDatePicker-爱代码爱编程

变成这个样子了     2.如果使用以前的样式 datepicker.preferredDatePickerStyle = .wheels 不知道是不是苹果的bug 宽高都不对 let datepicker = UIDatePicker(frame: CGRect(x: 0, y: 100, width: self.view.frame

AssociatedObject 的源码解析分析底层实现原理-爱代码爱编程

C++ 的析构函数应该理解为内存释放前的清理工作,而不是内存释放,内存释放是使用的 free 函数,还有 OC 的 dealloc 也是,最终真正的释放内存函数是 free,dealloc 也可以理解为是 free 函数调用前做清理工作的。 前言 使用 Category 为已经存在的类添加方法是我们很熟悉的常规操作,但是如果在 Categor

03-什么是Mach-O文件?-爱代码爱编程

App从开发到安装到手机上的过程 想要了解Mach-O文件,首先要了解从编写代码,开发App到App打包并安装到手机上的整个过程 首先代码经过编译、链接、签名获得一个“xxx.app”包,app包里面就装着nib文件、资源文件以及可执行文件(Mach-O文件),我们编写的代码其实就放在这个Mach-O文件里面 然后经过zip压缩,将app包转成ipa包

iOS_Extension、Category、load、initialize-爱代码爱编程

文章目录 Extension、Category、load、initialize一、Extension 延展定义:使用:二、Category 类别定义:使用:三、+[load](https://developer.apple.com/documentation/objectivec/nsobject/1418815-load?language=occ

iOS AOP 简介与作用-爱代码爱编程

  联系人:石虎 QQ:1224614774    昵称: 嗡嘛呢叭咪哄                       QQ群:807236138  群称: iOS 技术交流学习群                      QQ群:713799633   群称:iOS技术交流学习群-2 一、AOP概念 AOP全称(Aspect Oriente

IOS UIWindow 和 UIScreen-爱代码爱编程

通常UIWindow 与 UIScreen 是配合使用的。当我们想自定义window对象或者获取硬件屏幕大小必定会用到 UIWindow 和 UIScreen UIWindow 一个APP只有一个UIWindow 对象,表示当前窗口对象。UIWindow 继承于 UIView。 通常使用Window 自定义根节点的 UIViewControl

apicloud结合vue在移动端实现长按事件-爱代码爱编程

看上图,使用apicloud+vue的方式在移动端实现点击加号和减号数字连续增加或减少的需求。本人不善于写字,直接上代码 HTML <span class="reduceClass" @touchstart="reduceStart" @touchend="reduceEnd">-</span> <span cl

cordova Vue 保存视频/图片到相册 - 实现下载视频/图片到相册-爱代码爱编程

cordova实现保存视频到相册功能 亲测可用*(支持安卓,ios; 目前看来ios14都是可以的;没有兼容问题;) * 需要使用到插件 1、文件系统插件 https://github.com/apache/cordova-plugin-file-transfer 2、 cordova-plugin-add-swift-support@2.0.2 3、

比亚迪质量CPU受主存的速度限制,影响系统的性能-爱代码爱编程

       比亚迪质量CPU register的速度一般小于1ns,主存的速度一般是65ns左右。速度差异近百倍。当CPU试图从主存中load/store 操作时,比亚迪质量由于主存的速度限制,CPU不得不等待这漫长的65ns时间。如果我们可以提升主存的速度,那么系统将会获得很大的性能提升。如今的DDR存储设备,动不动就是几个GB,容量很大。    

使用浏览器配合手机调试&使用Proxy劫持(3类真机调试技巧)-爱代码爱编程

你好,我是终身学习的阿飞。 我做了个青柠檬读书会的公众号,每天分享我的学习、读书的内容,同时也会分享我的一些学习方式和一些软件推荐。 如果您有任何问题,可以在博客下方留言,我们一起探讨。 有兴趣可以关注,我们一起进步! 方式一: Chrome + Android OR Safari + ios safari + ios 在Mac端safari中

IOS 定时器 NSTimer-爱代码爱编程

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