动画特效一:图片翻转

前几节内容中,我详细的讲解了动画的理论知识及基本使用,在以后的章节中,我将用实际的案例来展示动画特效。这一节的例子是图片翻转。先看看最终效果:

素材准备:提供了两张图片,Baby.png和Xiaoming.png,并且它们的尺寸大小均为150 X 150。图片如下:

    

设计思路一:

1. 放置一个ContainerView,其尺寸大小也为150 X 150,用于存放图片。

2. 将上面的两张图片均放置在ContainerView中。

3. 进行outlets连线工作。

XIB中设计界面如下图:

编程思路:

1. 设计一个变量front,用于判断当前显示的是哪一张图片。

2. 初始化的时候,将后面的图片绕着y轴旋转180度,达到镜像的效果,这样的话,等旋转到前面的时候,就是正面显示了。

3. 执行UIView的block动画操作,完成翻转效果。

代码:

1. front变量:

@property (nonatomic,assign,getter = isFront) BOOL front;

2. 初始化工作:

- (void)viewDidLoad {
    [super viewDidLoad];

    self.backImageView.layer.cornerRadius = 75;
    self.backImageView.layer.masksToBounds = YES;

    self.frontImageView.layer.cornerRadius = 75;
    self.frontImageView.layer.masksToBounds = YES;
    self.backImageView.layer.transform = CATransform3DMakeRotation(M_PI, 0, 1, 0);

    self.front = YES;
}

首先设置图片的显示效果为圆形,即cornerRadius的大小为图片宽度的一半; 初始化front的值,表示默认显示前面的图片;关键的一句

self.backImageView.layer.transform = CATransform3DMakeRotation(M_PI, 0, 1, 0);

我们可以使用view debugger来分析层次结构。

先看正面图:

可以看出有五层: (UIWindow, UIView, UIContainerView, backImageView, frontImageView).

然后再看看背面图:

Baby.png这张图片和我文章开头列出的头像方向是一致的,而我们此时是从背面看过去的,说明CATransform3DMakeRotation的确将图片进行了翻转了180度的工作。

3. 动画最终实现的代码:

[UIView animateWithDuration:1 delay:0 options:UIViewAnimationOptionCurveLinear animations:^{
        self.rotateView.layer.transform = CATransform3DRotate(self.rotateView.layer.transform, M_PI_2, 0, 1, 0);
    } completion:^(BOOL finished) {
        if(self.isFront){
            self.frontImageView.hidden = YES;
            self.backImageView.hidden = NO;
            self.front = NO;
        }
        else{
            self.frontImageView.hidden = NO;
            self.backImageView.hidden = YES;
            self.front = YES;
        }

        [UIView animateWithDuration:1 delay:0 options:UIViewAnimationOptionCurveLinear animations:^{
            self.rotateView.layer.transform = CATransform3DRotate(self.rotateView.layer.transform, M_PI_2, 0, 1, 0);
        } completion:nil];
    }];

大致的思路就是先将图片旋转90度,达到这个点的时候,立刻将当前图片隐藏,将背面图片显示,并且将front变量的值进行取反工作。然后紧接着在进行旋转90度的操作工作。

设计思路二:

直接使用系统自带的transitionWithView实现动画效果。

XIB中设计界面如下图:

注意到,此时ContainerView中只存放一张图片,而图片的切换工作,都交给了系统自带的功能来完成了。

此时,动画的实现代码如下:

[UIView transitionWithView:self.containerView duration:1.0 options:UIViewAnimationOptionTransitionFlipFromLeft animations:^{
            self.iconView.image = [UIImage imageNamed:@"Baby"];
        } completion:^(BOOL finished) {
            dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
                [UIView transitionWithView:self.containerView duration:1.0 options:UIViewAnimationOptionTransitionFlipFromRight animations:^{
                    self.iconView.image = [UIImage imageNamed:@"Xiaoming"];
                } completion:nil];
            });
        }];

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-08-16 16:53:06

动画特效一:图片翻转的相关文章

android基础:动画案例(图片翻转)

layout->main.xml <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent"

12种炫酷的CSS3鼠标滑过图片遮罩层动画特效

InContent是一款效果非常炫酷的CSS3鼠标滑过图片遮罩层动画特效.这组特效共有12种不同的鼠标滑过图片效果,分为滑动.旋转和翻转3大类.它可以在支持CSS3 transition和transform属性的现代浏览器中正常工作. 在线预览   源码下载 使用方法 使用该CSS3鼠标滑过图片遮罩层动画特效需要在页面中引入由SASS编译的sass-compiled.css文件或由LESS编译的less-compiled.css文件. <link rel="stylesheet"

动画特效二:图片折叠

上一期动画特效,我讲解了<图片翻转>.这一节,我们继续动画之旅,讲解一下图片折叠效果. 图片折叠:顾名思义就是绕着图片的x或者y轴进行折叠,并且看上去有透视效果.先看看最终的效果图: 编程思路分析: 1. 使用一张图片 (Failed) 因为进行图片旋转的时候,如果下半部分的图片往前翻转了,上半部分的图片就会同时往后翻转了. 2. 使用两张图片 (Failed) 通过控制图片的显示与隐藏,但是折叠效果看不出来. 3. 使用一个View(它的大小保持和传递进来的图片大小一致),两张图片,而这两张

CSS图片翻转动画技术详解

因为不断有人问我,现在我补充一下:IE是支持这种技术的!尽管会很麻烦.需要做的是旋转front和back元素,而不是旋转整个容器元素.如果你使用的是最新版的IE,可以忽略这一节.IE10+是支持的,IE9完全不支持CSS动画. CSS动画非常的有趣:这种技术的美就在于,通过使用很多简单的属性,你能创建出就连皮克斯动画制作公司也会赞叹的漂亮的消隐效果.其中代表性的一种就是CSS图片翻转效果,能让你看到一张卡片的正反两面上的内容.本文就是要用最简单的方法向大家介绍如何创建这种效果. 简单说明:这并不

CSS3实战开发:仿天猫首页图片展示动画特效实战开发

各位网友大家好,我是陌上花会开,人称陌陌.今天我带领大家开发一个仿天猫首页图片展示动画特效的案例.一如往常,我既不提供源码给大家,也不提供Demo给大家,只是希望大家能跟着我的讲解,然后将代码一步步复制到本地,本人可以保证,页面上的代码复制到本地,绝对百分百运行,且得到与陌陌一样的运行效果.我这么做只为激起大伙的动手能力,望大家能明白我的用心. 好了,不废话了,直接本篇的实战开发吧. 我们看一下我们今天要做的实战案例效果图: 1. 鼠标划过前: 2. 鼠标划过右侧的图片时: 可能大伙看这个静态截

CSS3实战开发: 手把手教大家实战开发鼠标划过图片动画特效

各位网友大家好,我是陌上花会开,当然大家也可以叫我陌陌.今天这篇文章,我将手把手带领大家实战开发一个鼠标划过图片时的动画特效.在这里我不会给大家提供案例的源码下载,但是本人可以保证,只要大家跟着我的思路,一步步将代码复制到本地,一定会得到同样的运行效果.希望大家明白我的用心.好了不废话,直接进入今天的主题吧. 在今天这个案例里,我准备3个素材,一张背景图,两张风景图片.这个大家可以到网上自行下载. 在写代码之前,我先给大家展示一下,动画特效的效果图. 鼠标花过前: 当鼠标划过图片时,图片将逐渐变

10款让人惊叹的HTML5/jQuery图片动画特效

1.HTML5相册照片浏览器 可连接Flickr照片服务 以前我们经常会分享一些jQuery相册浏览插件,效果不错,实用性也很强.不过如果能利用HTML5来实现相册浏览器,那么相册浏览效果肯定会更加炫酷.今天分享的这款HTML5相册浏览器可以连接到Flickr获取照片,也可以连接到youtube获取视频,照片在初始化的时候有波浪般的效果. 在线演示 源码下载 2.CSS3图片模糊效果 今天我们来分享一款利用CSS3技术让图片模糊的效果,我们只需要将鼠标滑过图片,就可以让图片产生模糊的特效,利用C

css3鼠标滑过图片文字动画特效

在线预览   源码下载 css3鼠标滑过图片文字动画特效是一款常用的5种纯css3实现的鼠标滑过图片动画效果.悬停效果有:1.鼠标悬停图片变大文字消失.2.鼠标悬停文字消失.3.鼠标悬停整体旋转.4.鼠标悬停整体旋转放大.5.鼠标悬停整体上升 加入前端爱好者QQ群(123235875) 点击加群,共同交流进度!

基于HTML5/CSS3图片网格动画特效

现在HTML5技术可以让网页上的图片变得非常神奇,各种各样的HTML5图片动画特效让你眼花缭乱.今天要分享的这款HTML5图片网格动画特效就非常炫酷.图片缩略图按网格的布局一行行排列,你只需点击按钮即可让这些图片出现不可思议的动画效果,值得一看.效果图如下: 在线预览   源码下载 实现的代码: <div class="grid"> </div> <span class="animate">开始动画</span> &l