transform的使用(动画)

首先了解一下这些改变位置的属性的作用域

frame  :位置\尺寸

bound  : 尺寸
center :位置

transform : 位置\尺寸\旋转角度



了解一下三种形式的改变:
            CGAffineTransformMakeTranslation平移(水平,垂直)100是往上走100的意思,括号里是往什么方向走多少的意思,而不是指控位置!
            CGAffineTransformMakeScale 按比例缩放
            CGAffineTransformMakeRotation 按弧度旋转

1.首先拖出一个控件并对其属性进行操作
            取得一个未声明按钮,拿到storyboard里面的一个控件这个按钮没有声明只是在storyboard中拖出来设置了
             [self.view viewWithTag:10];在按钮的tag属性设置10之后,针对所有的UIView搜索这个tag
      因为要照顾所有的控件 所以返回的是一个UIView,所以我们要的是一个button的话 父类变子类就要强制类型转换

            UIButton *head = (UIButton *)[self.view viewWithTag:10];
             
             这个方法必须是 self . view 的子控件,子控件的子控件也可以 一层一层往下找
      这个方法的缺点 tag 一样的时候,只返回一个控件,看优先级,先找到谁先返回谁 优先级按添加控件的顺序


2.按钮移动
   每次向上移动100的距离
  head.transform = CGAffineTransformMakeTranslation(0, -100);这句话真正实现的时候只移动了一次 为什么呢,下面将做出解释。

   transform形变属性只允许有一种状态,这个状态指的是最初的状态 就是第一次的状态来说去做改变,所以第二次点击就没有反应了 

  所以我们要有个东西 来改变这个初始状态


  CGAffineTransformTranslate在head.transform的基础上产生的一个新的transform 
  head.transform = CGAffineTransformTranslate(head.transform, 0, -100);这句话才能每次都对位置做出累加的改变

3.Tansform 旋转,缩放
Tansform 旋转
向左旋转45度
弧度制而不是角度制
系统提供了一个宏给我们 M_PI_4
角度是正数:顺时针,角度是负数:逆时针


与刚刚的平移同理:

旋转
 head.transform = CGAffineTransformMakeRotation(-M_PI_4);
角度只能在原来的正的基础上转45度


  head.transform = CGAffineTransformRotate(head.transform, M_PI_4);
角度在转过的基础上转
 
这里要强调一下,Transform的向上是针对最上面那条线向上移动,上下左右都是一样的,所以比如你选择了45度之后再向上,那控件就会斜着走,所以如果你在旋转过角度的情况下还想向上走,就考虑用frame来改变位置


 
Transform的缩放(按比例)
Head.transform=CGAffineTransformMakeScale(x方向的缩放,y方向的缩放);
head.transform = CGAffineTransformMakeScale(1.5, 1.5);只相对于初始位置做一次

可不断放大
 head.transform = CGAffineTransformScale(head.transform, 1.5, 1.5);
 
放大>1  缩小<1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值