iOS开发自定义过渡动画

释放双眼,带上耳机,听听看~!

**

UIView特性提供的动画

**
UIView特性中提供的几个常量如下:

 UIViewAnimationOptionTransitionNone               = 0 << 20, // default
UIViewAnimationOptionTransitionFlipFromLeft    = 1 << 20,
UIViewAnimationOptionTransitionFlipFromRight   = 2 << 20,
UIViewAnimationOptionTransitionCurlUp          = 3 << 20,
UIViewAnimationOptionTransitionCurlDown        = 4 << 20,
UIViewAnimationOptionTransitionCrossDissolve   = 5 << 20,
UIViewAnimationOptionTransitionFlipFromTop     = 6 << 20,
UIViewAnimationOptionTransitionFlipFromBottom  = 7 << 20,

使用方法请看下面代码:

 [UIView transitionWithView:imageView duration:1.0
options:UIViewAnimationOptionTransitionCurlDown
animations:^{
//cycle to next image
UIImage *currentImage = imageView.image;
NSUInteger index = [images indexOfObject:currentImage];
index = (index + 1) % [images count];
imageView.image = images[index];
}
completion:NULL];

这个方法想必大家都很熟悉,博主也是在看到这里时才恍然大悟,原来这个方法是这样的,它不属于Core Animation,但却提供了Core Animation的过渡效果。

以上所说为UIView的特性提供的Core Animation过渡效果,在开发中属于比较常见的。

**

自定义动画

**

系统提供的动画毕竟是有限的,当一个动画用系统的属性解决不了怎么办?这事后就要自定义动画了,怎么自定义呢?我们都知道旋转,缩放,平移,把这些过程通过UIView的特性展现出来就组合成了一系列的动画,先看使用方法:

//截图 
UIGraphicsBeginImageContextWithOptions(imageView.bounds.size, YES, 0.0);
[imageView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *coverImage = UIGraphicsGetImageFromCurrentImageContext();
//拿到截图的图片,放置在原图位置坐操作
UIView *coverView = [[UIImageView alloc] initWithImage:coverImage];
coverView.frame = CGRectMake(80, 80, 150, 150);
[self.view addSubview:coverView];
//update the view color(we'll simply randomize the layer background color)
CGFloat red = arc4random() / (CGFloat)INT_MAX;
CGFloat green = arc4random() / (CGFloat)INT_MAX;
CGFloat blue = arc4random() / (CGFloat)INT_MAX;
self.view.backgroundColor = [UIColor colorWithRed:red green:green blue:blue alpha:1.0]; //perform animation (anything you like)
[UIView animateWithDuration:1.0 animations:^{
//scale, rotate and fade the view
CGAffineTransform transform = CGAffineTransformMakeScale(0.01, 0.01);
transform = CGAffineTransformRotate(transform, M_PI_2);
coverView.transform = transform;
coverView.alpha = 0.0;
UIImage *currentImage = imageView.image;
NSUInteger index = [images indexOfObject:currentImage];
index = (index + 1) % [images count];
imageView.image = images[index];
} completion:^(BOOL finished) {
//remove the cover view now we're finished with it
[coverView removeFromSuperview];
}];

下面看下上面两种动画的效果:

这样看来,动画就没那么复杂了吧?类似的效果还有很多,方法也不限定,可以自己组合,还有一个就是利用前面说过的动画组和基础动画,关键帧动画来组合不同的动画效果。不知道的去翻前面的博客吧。
关于动画博主会不间断更新内容,欢迎关注。
最后不要把正事忘了,Demo下载地址

人已赞赏
iOS文章

iOS开发让tableView不能下拉刷新,可以上拉加载

2021-2-3 8:24:54

iOS文章

iOS开发分段选择滚动选择器

2021-2-3 9:39:53

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索