美文网首页
iOS简单动画

iOS简单动画

作者: 三岁就很乖 | 来源:发表于2016-08-08 11:04 被阅读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设置的画面)

    相关文章

      网友评论

          本文标题:iOS简单动画

          本文链接:https://www.haomeiwen.com/subject/tqqrsttx.html