ios开发之UI基础--transframe属性

来源:互联网 发布:手机淘宝到货退款流程 编辑:程序博客网 时间:2024/06/05 06:17

1. transform属性

在OC中,通过transform属性可以修改对象的平移、缩放比例和旋转角度

常用的创建transform结构体方法分两大类

(1) 创建“基于控件初始位置”的形变

CGAffineTransformMakeTranslation(平移)

CGAffineTransformMakeScale(缩放)

CGAffineTransformMakeRotation(旋转)

 

(2) 创建“基于transform参数”的形变

CGAffineTransformTranslate

CGAffineTransformScale

CGAffineTransformRotate

 

补充:

在OC中,所有跟角度相关的数值,都是弧度值,180° = M_PI

正数表示顺时针旋转

负数表示逆时针旋转

 

提示:由于transform属性可以基于控件的上一次的状态进行叠加形变,例如,先旋转再平移。因此在实际动画开发中,当涉及位置、尺寸形变效果时,大多修改控件的transform属性,而不是frame、bounds、center 。

示例代码:


 

  1. #import "ViewController.h"
  2. @interface ViewController ()
  3. @property (weak, nonatomic) IBOutlet UIButton *button;

  4. @end

  5. @implementation ViewController

  6. - (void)viewDidLoad {
  7. [super viewDidLoad];
  8. // Do any additional setup after loading the view, typically from a nib.
  9. }

  10. // 平移
  11. - (IBAction)trasnlate:(id)sender {
  12. // 一次性的移动10 的距离
  13. // _button.transform = CGAffineTransformMakeTranslation(10, 0);

  14. // 如果想要持续移动,那么就需要得到当前view的transform
  15. // 1. 获取当前button的transform属性
  16. CGAffineTransform transform = _button.transform;

  17. // 2. 在transform的基础上进行修改
  18. _button.transform = CGAffineTransformTranslate(transform, 10, 0);
  19. }

  20. // 缩放
  21. - (IBAction)scal:(id)sender {
  22. // 执行缩放
  23. // _button.transform = CGAffineTransformMakeScale(0.5, 0.5);

  24. // 持续执行缩放
  25. // 1. 获取当前button的transform
  26. CGAffineTransform transform = _button.transform;

  27. // 2. 在transform进行修改
  28. _button.transform = CGAffineTransformScale(transform, 0.5, 0.5);
  29. }

  30. // 旋转
  31. - (IBAction)rotate:(id)sender {

  32. // _button.transform = CGAffineTransformMakeRotation(M_PI_4);



  33. [UIView animateWithDuration:1 animations:^{
  34. // 1. 获取当前button的transform
  35. CGAffineTransform transform = self.button.transform;

  36. // 2. 在transform进行修改
  37. self.button.transform = CGAffineTransformRotate(transform, M_PI_4);

  38. self.button.transform = CGAffineTransformTranslate(transform, 30, 0);

  39. self.button.transform = CGAffineTransformScale(transform, 1.5, 1.5);
  40. }];
  41. }

  42. - (IBAction)reset:(id)sender {
  43. // 恢复原始状态
  44. _button.transform = CGAffineTransformIdentity;
  45. }
  46. @end

0 0