iOS面试题(六) UI视图 -总结

1.系统的UI事件传递机制是怎样的?

//主要考察的是hitTest和pointInside这样的一个系统的内部实现。
当点击了屏幕,点击事件传递给UIApplication - UIWindow -在UIWindow里面会判断hitTest,来返回最终的响应视图
内部实现
1.先判断是否可交互,是否隐藏以及是否透明
2.调用pointInside,判断当前点击的点是否在UIWindow范围内
    是的话,倒序遍历UIWindow的子视图,来查找最终响应事件的视图
    不是的话,返回UIWindow

2.使UITableView滚动更流畅的方案或者思路都有哪些?
关于性能优化方面的掌握程度,可以从CUP和GPU两方面回答这个问题

//我们可以分别对CPU和GPU做滑动优化

***CPU做了什么 - UI布局,文本计算,绘制,图片编解码***
             可做的优化 
                 -在子线程中进行对象的创建,调整和销毁
                 -在子线程中预排版(布局计算,文本计算)
                 -预渲染(图片的编解以及采用异步绘制方案等)
                 -让主线程有更多的时间去响应用户的交互

***GPU做了什么 - 图层合成,纹理渲染***
             可做的优化
                 -纹理渲染方面的优化:避免离屏渲染             
                       -避免设置视图的圆角属性(必须同时maskToBounds为YES才会触发)
                       -避免设置视图的图层蒙版
                       -避免设置阴影
                       -避免设置光栅化     
                 -图层合成方面的优化:减少视图层级复杂度


3.什么是离屏渲染?

离屏渲染她的概念起源于GPU层面,在当前屏幕缓冲区以外新开辟一个缓冲区进行渲染操作。

4.UIView和CALayer之间的关系是怎样的?

UIView只负责事件传递及视图响应链的
CALayer只负责内容contents(UI视图)的显示工作
这些用到了六大设计原则中的 单一职责原则



ps:UI视图响应链

主要方法
touchesBegan
touchesMoved
touchesEnded
首先找到当前响应的view看它能否处理这个事件
view - 父视图 - UIApplicationDelegate - 事件被忽略

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值