iOS简单动画

2016-08-08  本文已影响83人  三岁就很乖
1、CGAffineTransformMakeTranslation
 [UIView animateWithDuration:0.3 animations:^{
        
        //        _machinistBtn.transform = CGAffineTransformMakeTranslation(-ScreenViewW, self.transform.ty);
        //        _otherBtn.transform = CGAffineTransformMakeTranslation(-ScreenViewW, self.transform.ty);
        //        _bgView.transform = CGAffineTransformMakeTranslation(-ScreenViewW, self.transform.ty);
    _btn.transform = CGAffineTransformMakeTranslation(-50, 0);
        
        
    } completion:nil];

CGAffineTransformMakeTranslation(<#CGFloat tx#>, <#CGFloat ty#>)

 UIButton *btn = [[UIButton alloc]initWithFrame:CGRectMake(50, 0, 50, 50)];

这里主要看btnframe的位置是(50,0),它的center是(75,0)
执行

[UIView animateWithDuration:0.3 animations:^{
    btn.transform = CGAffineTransformMakeTranslation(-50, 0);
    } completion:nil];

注意: (-50,0),它是一个向量,换句话说,在调用CGAffineTransformMakeTranslation(x,y)的时候,已经把(75,0)作为(绝对)原点,那么移动后终点应该是(25,0),这时候btnframe(25,0,50,50)

2、少一个 MakeCGAffineTransformMakeTranslation(x,y)变成CGAffineTransformTranslation(trans,x,y),多了一个参数其实都一样,为什么这么说,CGAffineTransformTranslation(trans,x,y)中的trans是给这个方法指定了一个相对原点,比如这样调用

UIButton *tmpBtn2 = [[UIButton alloc] initWithFrame:CGRectMake(0, 200, 120, 40)];  
tmpBtn2.transform = CGAffineTransformTranslation(CGAffineTransformMakeTranslation(160, 0),20,0),  

tmpBtn2先移动向量(160,0),在移动(20,0)。

 所以CGAffineTransformTranslation(CGAffineTransformMakeTranslation(160, 0),20,0) ==  CGAffineTransformMakeTranslation(180, 0) 是ture的。

 同理可以的出来CGAffineTransformMakeScale和CGAffineTransformScale、还有CGAffineTransformMakeRotation和CGAffineTransformRotation是一样的道理。
 

UIButton *tmpBtn3 = [[UIButton alloc] initWithFrame:CGRectMake(0, 200, 120, 40)];  
tmpBtn3.transform = CGAffineTransformMakeScale(2,2); 大小变成 240*80  
UIButton *tmpBtn4 = [[UIButton alloc] initWithFrame:CGRectMake(0, 200, 120, 40)];  
tmpBtn4.transform = CGAffineTransformScale(CGAffineTransformMakeScale(2,2),2,2);   

 tmpBtn4认为(2,2)的frame大小(即240*80),是放大倍数的标准,所以就会放大4倍。

3、CGAffineTransformIdentity
CGAffineTransformIdentity:清空所有的设置的transform(一般和动画配合使用,只能使用于transform设置的画面)

上一篇下一篇

猜你喜欢

热点阅读