iOS之UIView基本动画

iOS的动画基本上都是通过UIView来实现的,UIView里面封装了许多当前视图的属性以及改变这些属性的方法,通过这些方法我们就可以完成一些简单的动画。

 一、渐变透明

属性:  alpha  是一个CGFloat 类型,1.0 表示不透明,0.0表示全透明。

//渐变,alpha属性
-(void)changeopacity{
    //现将初始状态改变为全透明
    _redView.alpha = 1;
    //使用block动画
    [UIView animateWithDuration:1 animations:^{
        //具体属性的变化,就在这里做
       self.redView.alpha = 0.0;
    }];
    
}

我们创建了一个视图 _redview  然后我们去改变这个视图的透明度。在这里我们我们用到了UIView的一个方法  [UIView animateWithDuration:(NSTimeInterval)   animations:^(void)animations],第一个参数表示这个动画完成需要多少时间,也就是动画的持续时间,第二个参数是一个 block ,表示这个动画实际上是用来干什么的,在这里我们让这个视图的透明度变为0。因此,具体体现出来就是这个红色的视图在一秒的时间内变透明。

二、移动

1.通过改变当前视图的坐标我们可以移动视图  下面是通过改变视图中心点的坐标来实现的移动。


    //移动  center属性
    [UIView animateWithDuration:2 animations:^{
        self.redView.center = CGPointMake(self.redView.center.x, self.redView.center.y-100);
    }];

红色视图在两秒内向上移动了100个像素。

2.通过改变视图的fram也可以实现移动

 [UIView animateWithDuration:1 animations:^{
        _redView.frame = CGRectMake(150, 200, 200, 200);
    }];

3.通过视图的transform属性来更改视图的位置

   [UIView animateWithDuration:1 animations:^{
        //利用CGAffin来移动
        self.redView.transform = CGAffineTransformMakeTranslation(50, 100);//只能做一次
        self.redView.transform = CGAffineTransformTranslate(self.redView.transform, 50, 100);//可以进行多次操作
        
    }];

通过CGAffineTransformMakeTranslation和CGAffineTransformTranslate方法实现移动。前者只能执行一次,有两个参数,都是CGFloat类型,表示相对于当前的视图的x,y的坐标的偏移,因此只能移动一次。后者可以多次执行,有三个参数,第一个参数是CGAffineTransform类型,表示是一个视图的transform,后面的两个参数是相对于第一个参数(一个视图)的偏移量,这样就可以实现多次操作了,因为每次移动都是相对于前一个视图的偏移。

三、改变大小

1.通过改变视图的frame属性也可以改变视图的大小

 [UIView animateWithDuration:1 animations:^{
        _redView.frame = CGRectMake(150, 200, 200, 200);
    }];

2.通过使用视图的transform属性来改变大小

 [UIView animateWithDuration:1 animations:^{
        //利用CGAffin来扩大
        self.redView.transform = CGAffineTransformMakeScale(2, 2);//一次放大
        self.redView.transform = CGAffineTransformScale(self.redView.transform, 2, 2);//多次放大
    }];

同样transform的改变大小的方法也有两套,有Make这个单词的是只做一次的,有两个参数,是相对于原来视图的需要放大的倍数。另一个是可以执行多次的。

四、旋转

 //利用CGAffin来旋转
        self.redView.transform = CGAffineTransformMakeRotation(M_2_PI);//旋转90度,一次

直接利用transform属相的CGAffineTransformMakeRotation方法来进行旋转,参数是需要旋转的度数,是一个弧度制,这里表示的是π/2。这个也有一直旋转的方法,不过这个也不能让它一直旋转,想要它一直保持旋转我们需要设置一个定时器。

发布了32 篇原创文章 · 获赞 8 · 访问量 9541
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 大白 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览