34. 简述视图控件器的生命周期(10分)。
答: loadView 尽管不直接调用该方法,如多手动创建自己的视图,那么应该覆盖这个方法并将它们赋值给试图控制器的 view 属性。
viewDidLoad 只有在视图控制器将其视图载入到内存之后才调用该方法,这是执行任何其他初始化操作的入口。
viewDidUnload 当试图控制器从内存释放自己的方法的时候调用,用于清楚那些可能已经在试图控制器中创建的对象。
viewVillAppear 当试图将要添加到窗口中并且还不可见的时候或者上层视图移出图层后本视图变成顶级视图时调用该方法,用于执行诸如改变视图方向等的操作。实现该方法时确保调用 [super viewWillAppear:].
viewDidAppear 当视图添加到窗口中以后或者上层视图移出图层后本视图变成顶级视图时调用,用于放置那些需要在视图显示后执行的代码。确保调用 [super viewDidAppear : ] 。
35. 动画有基本类型有哪几种;表视图有哪几种基本样式(10分)?
答:动画有两种基本类型:隐式动画和显式动画。
36. 实现简单的表格显示需要设置UITableView的什么属性、实现什么协议(10分)?
答:实现简单的表格显示需要设置 UITableView 的 dataSource 和 delegate 属性,实现 UITableViewDataSource 和 UITableViewDelegate 协议。
37. Cocoa Touch提供了哪几种Core Animation过渡类型(10分)?
答: Cocoa Touch 提供了 4 种 Core Animation 过渡类型,分别为:交叉淡化、推挤、显示和覆盖。
38. UIView与CLayer有什么区别(10分)?
答: 1. UIView 是 iOS 系统中界面元素的基础,所有的界面元素都是继承自它。它本身完全是由 CoreAnimation 来实现的。它真正的绘图部分,是由一个 CALayer 类来管理。 UIView 本身更像是一个 CALayer 的管理器,访问它的跟绘图和跟坐标有关的属性。
2. UIView 有个重要属性 layer ,可以返回它的主 CALayer 实例。
3. UIView 的 CALayer 类似 UIView 的子 View 树形结构,也可以向它的 layer 上添加子 layer ,来完成某些特殊的表示。即 CALayer 层是可以嵌套的。
4. UIView 的 layer 树形在系统内部,被维护着三份 copy 。分别是逻辑树,这里是代码可以操纵的;动画树,是一个中间层,系统就在这一层上更改属性,进行各种渲染操作;显示树,其内容就是当前正被显示在屏幕上得内容。
5. 动画的运作:对 UIView 的 subLayer (非主 Layer )属性进行更改,系统将自动进行动画生成,动画持续时间的缺省值似乎是 0.5 秒。
6. 坐标系统: CALayer 的坐标系统比 UIView 多了一个 anchorPoint 属性,使用 CGPoint 结构表示,值域是 0~1 ,是个比例值。这个点是各种图形变换的坐标原点,同时会更改 layer 的 position 的位置,它的缺省值是 {0.5,0.5} ,即在 layer 的中央。
7. 渲染:当更新层,改变不能立即显示在屏幕上。当所有的层都准备好时,可以调用 setNeedsDisplay 方法来重绘显示。
8. 变换:要在一个层中添加一个 3D 或仿射变换,可以分别设置层的 transform 或 affineTransform 属性。
9. 变形: Quartz Core 的渲染能力,使二维图像可以被自由操纵,就好像是三维的。图像可以在一个三维坐标系中以任意角度被旋转,缩放和倾斜。 CATransform3D 的一套方法提供了一些魔术般的变换效果。