以UIButton为例,创建一个类,继承于UIButton

/*页面的创建用storyboard*/                                      

.h文件   

@interface PTSRecommendButton : UIButton

- (void)viewTransform;

@end

.m文件

@implementation PTSRecommendButton

- (void)viewTransform {

//

[self.layer setAnchorPoint:CGPointMake(1, 0.5)];

CGRect btnFrame = self.frame;

//设置中心点  AnchorPoint默认是0.5

btnFrame.origin.x += btnFrame.size.width / 2 ;

self.frame = btnFrame;

//放大

[UIView transitionWithView:self duration:0.5 options:UIViewAnimationOptionAllowUserInteraction animations:^{

   //因为是button在动画之行的过程点击如果没有页面跳转的操作。要设置不能狗被点击 否则会引起动画方法的覆盖

//self.userInteractionEnabled = NO;

self.transform = CGAffineTransformMakeScale(1.2, 1.2);

} completion:^(BOOL finished) {

//还原中心点

[self.layer setAnchorPoint:CGPointMake(0.5, 0.5)];

CGRect btnFrame = self.frame;

btnFrame.origin.x -= btnFrame.size.width / 2 ;

self.frame = btnFrame;

//旋转

[UIView transitionWithView:self duration:0.25 options:UIViewAnimationOptionAllowUserInteraction animations:^{

//

self.transform = CGAffineTransformRotate(self.transform, M_PI*0.05);

} completion:^(BOOL finished) {

//反向旋转

[UIView transitionWithView:self duration:0.5 options:UIViewAnimationOptionAllowUserInteraction animations:^{

self.transform = CGAffineTransformRotate(self.transform, -M_PI*0.1);

} completion:^(BOOL finished) {

//回到最初旋转状态

[UIView transitionWithView:self duration:0.25 options:UIViewAnimationOptionAllowUserInteraction animations:^{

self.transform = CGAffineTransformRotate(self.transform, M_PI*0.05);

} completion:^(BOOL finished) {

//中心点还原

[self.layer setAnchorPoint:CGPointMake(1, 0.5)];

CGRect btnFrame = self.frame;

btnFrame.origin.x += btnFrame.size.width / 2 ;

self.frame = btnFrame;

//恢复初始的状态

[UIView transitionWithView:self duration:0.5 options:UIViewAnimationOptionAllowUserInteraction animations:^{

self.transform = CGAffineTransformIdentity;

} completion:^(BOOL finished) {

[self.layer setAnchorPoint:CGPointMake(.5, 0.5)];

CGRect btnFrame = self.frame;

//设置中心点  AnchorPoint默认是0.5

btnFrame.origin.x -= btnFrame.size.width / 2 ;

self.frame = btnFrame;

//self.userInteractionEnabled = YES ;

}];

}];

}];

}];

}];

}

@end

View的放大->旋转->还原动画的更多相关文章

  1. css3 一个六边形 和 放大旋转动画DEMO演示

    <!DOCTYPE html> <html> <head> <meta charset="gb2312"> <title> ...

  2. 教你实现类似于格瓦拉启动页中的放大转场动画(OC&Swift)

    教你实现类似于格瓦拉启动页中的放大转场动画(OC&Swift) 一.前言 用过格瓦拉电影,或者其他app可能都知道,一种点击按钮用放大效果实现转场的动画现在很流行,效果大致如下 在iOS中,在 ...

  3. WPF动态加载3D 放大-旋转-平移

    原文:WPF动态加载3D 放大-旋转-平移 WavefrontObjLoader.cs 第二步:ModelVisual3DWithName.cs public class ModelVisual3DW ...

  4. CSS3圆圈动画放大缩小循环动画效果

    代码如下: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" c ...

  5. 纯CSS3悬停图标旋转导航动画代码

    分享一款纯CSS3悬停图标旋转导航动画代码.这是一款鼠标移到图标上动画旋转显示导航菜单.效果图如下: 在线预览   源码下载 实现的代码. html代码: <div id="x_con ...

  6. 同时对view延时执行两个动画时候的现象

    同时对view延时执行两个动画时候的现象 对于view延时执行了两个动画后,会将第一个动画效果终止了,直接在第一个动画的view的最后的状态上接执行后续的动画效果,也就是说,我们可以利用这个特性来写分 ...

  7. 用css3实现摩天轮旋转的动画效果

    用css3实现摩天轮旋转的动画效果 1.CSS3 @keyframes 规则如需在 CSS3 中创建动画,您需要学习 @keyframes 规则.@keyframes 规则用于创建动画.在 @keyf ...

  8. CSS3轻松实现彩色旋转六面体动画

    一.效果预览: 二.基本思路: 1.首先这个一个自动触发的动画,因此应使用animation设计,包括自动组装和组装完成后自动旋转的过程: 2.当鼠标放上去的时候六个面及上面的字体均变色,应在六个面设 ...

  9. 实现放大转场动画 from cocoachina

    原文1:http://www.cocoachina.com/ios/20160318/15714.html 原文2:http://ningandjiao.iteye.com/blog/2049105 ...

随机推荐

  1. 一个Dotnet数据框架的bug

    好久没写C#代码了,今天在维护公司老项目时,偶然发现一个BUG.记录一下,后面的同学就不要踩坑啦. -------------------------------------------------- ...

  2. 全球(局)唯一标识符GUID的使用

    1.GUID百科介绍: 1.全局唯一标识符(GUID,Globally Unique Identifier)也称作 UUID(Universally Unique IDentifier) .GUID是 ...

  3. ASCII Art (English)

    Conmajia, 2012 Updated on Feb. 18, 2018 What is ASCII art? It's graphic symbols formed by ASCII char ...

  4. 阶段小项目1:循环间隔1秒lcd显示红绿蓝

    #include<stdlib.h>#include<stdio.h>#include<string.h>#include<error.h>#inclu ...

  5. vi代码智能提示功能及相关配置

    vim是一款支持插件.功能无比强大的编辑器,无论你的系统是linux.unix.mac还是windows,都能够选择他来编辑文件或是进行工程级别 的coding.如果能把vim用好了,不仅编程效率能得 ...

  6. 阿里云CentOS使用iptables禁止某IP访问

    在CentOS下封停IP,有封杀网段和封杀单个IP两种形式.一般来说,现在的攻击者不会使用一个网段的IP来攻击(太招摇了),IP一般都是散列的.于是下面就详细说明一下封杀单个IP的命令,和解封单个IP ...

  7. 硬件能力与智能AI-Zoomla!逐浪CMS2 x3.9.2正式发布

    北京时间2017年9月10日,领先的CMS网站内容管理系统与生产力软件研发厂商-Zoomla!逐浪CMS团队发布其年度重要产品:Zoomla!逐浪CMS2 x3.9.2,引领国内门户.移动.微商以及生 ...

  8. D. Number of Parallelograms

    D. Number of Parallelograms 原题链接 time limit per test 4 seconds memory limit per test 256 megabytes Y ...

  9. 【BZOJ1834】 网络扩容

    Time Limit: 1000 ms   Memory Limit: 128 MB Description 给定一张有向图,每条边都有一个容量C和一个扩容费用W.这里扩容费用是指将容量扩大1所需的费 ...

  10. 【BZOJ2127】happiness

    Time Limit: 1000 ms   Memory Limit: 256 MB Description 高一一班的座位表是个n*m的矩阵,经过一个学期的相处,每个同学和前后左右相邻的同学互相成为 ...