美文网首页
iOS面试题-UIKit

iOS面试题-UIKit

作者: wrootlflvl | 来源:发表于2019-04-08 18:28 被阅读0次

Main函数之前做了什么? 

1. 动态库链接库

2. ImageLoader加载可执行文件,里面是被编译过的符号、代码等

3. runtime与+load

APP的启动过程,从main开始

1.main 函数

2.UIApplicationMain

    *创建UIApplication对象    

    *创建UIApplication的delegate对象

3.如果有storyboard,根据info.plist获得Main.storyboard的文件名,加载Main.storyboard;如果没有storyboard,AppDelegate对象开始处理(监听)系统事件,程序启动完毕的时候,在application:didFinishLaunchingWithOptions:中

    *创建UIWindow

    *创建和设置UIWindow的rootViewController 

    *显示窗口

控制器View的生命周期

loadView:加载view

viewDidLoad:view加载完毕

viewWillAppear:控制器的view将要显示

viewWillLayoutSubviews:控制器的view将要布局子控件

viewDidLayoutSubviews:控制器的view布局子控件完成

viewDidAppear:控制器的view完全显示

viewWillDisappear:控制器的view即将消失的时候

viewDidDisappear:控制器的view完全消失的时候

事件的产生和传递

事件产生和传递过程

1.发生触摸事件后,系统会将该事件加入到一个由UIApplication管理的事件队列中 

2.UIApplication会从事件队列中取出最前面的事件,并将事件分发下去以便处理,通常会先发送事件给应用程序的主窗口(keyWindow)

3.主窗口会在视图层次结构中找到一个最合适的视图来处理触摸事件,这也是整个事件处理过程的第一步

4.找到合适的视图控件后,就会调用视图控件的touches方法来做具体的事件处理

主窗口如何找到最合适的控件来处理事件?

1.判断自己是否能接收触摸事件

2.判断触摸点是否在自己身上

3.从后往前遍历子控件,重复前面两个步骤

4.如果没有符合条件的子控件,那么就自己最适合处理

UIView中提供了两个方法用来寻找最合适的View

// 用来寻找最合适的view处理事件,只要一个事件传递给一个控件就会调用控件的hitTest方法,参数point表示方法调用者坐标系上的点

- (nullable UIView*)hitTest:(CGPoint)point withEvent:(nullableUIEvent*)event;

// 用来判断当前这个点在不在方法调用者上,点必须在方法调用者的坐标系中,判断才会准确

- (BOOL)pointInside:(CGPoint)point withEvent:(nullable UIEvent *)event;

响应者链的传递过程

1.用户点击屏幕后产生一个触摸事件,经过一系列的传递过程后,会找到合适的视图控件来处理这个事件

2.找到最合适的视图控件后,就会调用控件的touches方法来做具体的事件处理

3.这些touches方法的默认做法是将事件顺着响应者链条向上传递,将事件交给响应者进行处理

4.判断上一个响应者,如果view的视图控制器存在,控制器就为上一个响应者,传递给控制器;如果控制器不存在,其父视图为上一个响应者,将其传递给它的父视图

5.在视图层次结构的最顶级视图,如果也不能处理收到的事件或者消息,则其将事件或消息传递给window对象进行处理

6.如果window对象也不处理,则其将事件或消息传递给UIApplication对象

7.如果UIApplication也不能处理该事件或消息,则将其丢弃

相关文章

  • UIKit类继承图

    UIKit类继承图 iOS 面试题 微信公众号

  • 简述你对 UIView、UIWindow 和 CALayer 的

    原文:iOS面试题大全 1.UIView:数据UIKit.framework框架,负责渲染矩形区域的内容,为矩形区...

  • iOS面试题-UIKit

    Main函数之前做了什么? 1. 动态库链接库 2. ImageLoader加载可执行文件,里面是被编译过的符号、...

  • iOS动画

    iOS 动画1:UIKit的动画2:Core Animation 动画 UIKit 动画 UIKit 的动画构建比...

  • iOS最新面试题汇总(四)

    iOS最新面试题汇总:iOS最新面试题汇总(一)iOS最新面试题汇总(二)iOS最新面试题汇总(三)iOS最新面试...

  • iOS最新面试题汇总(三)

    iOS最新面试题汇总:iOS最新面试题汇总(一)iOS最新面试题汇总(二)iOS最新面试题汇总(三)iOS最新面试...

  • iOS最新面试题汇总(一)

    iOS最新面试题汇总:iOS最新面试题汇总(一)iOS最新面试题汇总(二)iOS最新面试题汇总(三)iOS最新面试...

  • iOS最新面试题汇总(二)

    iOS最新面试题汇总:iOS最新面试题汇总(一)iOS最新面试题汇总(二)iOS最新面试题汇总(三)iOS最新面试...

  • iOS面试题

    iOS面试题 iOS面试题

  • UIScrollView的contentSize、content

    在iOS中,UIScrollView(继承UIKit.framework重的UIView)是UIKit.frame...

网友评论

      本文标题:iOS面试题-UIKit

      本文链接:https://www.haomeiwen.com/subject/rucpiqtx.html