在视图的drawRect:
方法中常常借助坐标系统变换来进行描画。而在iPhone OS系统中,您还可以用它来实现视图的某些视觉效果。举例来说,UIView
类中包含一个transform
属性声明,您可以通过它来对整个视图实行各种类型的平移、比例缩放、和变焦缩放效果。缺省情况下,这个属性的值是一个恒等变换,不会改变视图的外观。在加入变换之前,首先要得到该属性中存储的CGAffineTransform
结构,用相应的Core Graphics函数实行变换,然后再将修改后的变换结构重新赋值给视图的transform
属性。
请注意:当您将变换应用到视图时,所有执行的变换都是相对于视图的中心点。
平移一个视图会使其所有的子视图和视图本身的内容一起移动。由于子视图的坐标系统是继承并建立在这些变化的基础上的,所以比例缩放也会影响子视图的描画。有关如何控制视图内容缩放的更多信息,请参见“内容模式和比例缩放”部分。
重要提示:如果transform
属性的值不是恒等变换,则frame
属性的值就是未定义的,必须被忽略。在设置变换属性之后,请使用bounds
和center
属性来获取视图的位置和大小。
有关如何在drawRect:
方法中使用变换的信息,请参见“坐标和坐标变换”部分;有关用于修改CGAffineTransform
结构的函数,则请参见CGAffineTransform参考。