iOS 头条一面 面试题
3 月,跳不动了?>>> 1、如何高效的切圆角? 切圆角共有以下三种方案: cornerRadius + masksToBounds:适用于单个视图或视图不在列表上且量级较小的情况,会导致离屏渲染。 CAShapeLayer+UIBezierPath:会导致离屏渲染,性能消耗严重,不推荐使用。 Core Graphics:不会导致离屏渲染,推荐使用。 2、什么是隐式动画和显式动画? 隐式动画指的是改变属性值而产生的默认的过渡动画(如background、cornerRadius等),不需要初始化任何类,系统自己处理的动画属性;显式动画是指自己创建一个动画对象并附加到layer上,如 CAAnimation、CABasicAnimation、CAKeyframeAnimation 。 3、UIView 和 CALayer 的区别? UIView 是 CALayer 的 delegate,UIView 可以响应事件,而 CALayer 则不能。 4、离屏渲染? iOS 在不进行预合成的情况下不会直接在屏幕上绘制该图层,这意味着 CPU 和 GPU 必须先准备好屏幕外上下文,然后才能在屏幕上渲染,这会造成更多时间时间和更多的内存的消耗。 5、Objective - C 是否支持方法重载(overloading)? 不支持。方法重载(overloading)