【代码笔记】iOS-点击一个按钮会出现多个按钮的动画效果
一,效果图。
二,工程图。
三,代码。
RootViewController.h

#import <UIKit/UIKit.h> @interface RootViewController : UIViewController
{
UIImageView *iCanImageView;
UIImageView *menu_carImageView;
UIImageView *menu_movieImageView;
UIImageView *menu_setImageView;
UIImageView *menu_photoImageView;
BOOL isRonating;
int count;
}
@end

RootViewController.m

#import "RootViewController.h" @interface RootViewController () @end @implementation RootViewController - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
} - (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view. //初始化背景图
[self initBackgroundView]; }
#pragma -mark -functions
-(void)initBackgroundView
{
//隐藏导航条
self.navigationController.navigationBarHidden=YES; //设置背景图片
UIImageView *bgImage = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"main_bg.png"]];
bgImage.frame = self.view.bounds; //背景图添加手势
UITapGestureRecognizer *bgTgr = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(bgClick)];
[bgImage addGestureRecognizer:bgTgr];
bgImage.userInteractionEnabled = YES; [self.view addSubview:bgImage]; //背景图上的小图标
iCanImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"ican.png"]];
iCanImageView.center = CGPointMake(50, 400); //小图标添加手势
UITapGestureRecognizer *iCanTgr = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(iCanClick)];
[iCanImageView addGestureRecognizer:iCanTgr];
iCanImageView.userInteractionEnabled = YES; //弹出的4个设置的小图标
//车图标
menu_carImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"menu_car.png"]];
menu_carImageView.tag = 3;
menu_carImageView.center = iCanImageView.center; //视频的图标
menu_movieImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"menu_movie.png"]];
menu_movieImageView.tag = 4;
menu_movieImageView.center = iCanImageView.center; //图片的图标
menu_photoImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image.png"]];
menu_photoImageView.tag = 5;
menu_photoImageView.center = iCanImageView.center; //设置的图标
menu_setImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"menu_set.png"]];
menu_setImageView.tag = 6;
menu_setImageView.center = iCanImageView.center; [self.view addSubview:menu_carImageView];
[self.view addSubview:menu_movieImageView];
[self.view addSubview:menu_photoImageView];
[self.view addSubview:menu_setImageView];
[self.view addSubview:iCanImageView]; // 将小图片都添加到数组,最后循环数组为每一个小图片添加点击手势
NSArray *imageViewArr = [[NSArray alloc] initWithObjects:menu_carImageView,menu_movieImageView,menu_photoImageView,menu_setImageView, nil]; for(UIImageView *view in imageViewArr)
{
UITapGestureRecognizer *jumpTo = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(Jump:)];
view.userInteractionEnabled = YES;
[view addGestureRecognizer:jumpTo];
} // 判断图标是否旋转,还有小图标是否飞出
isRonating = NO; // 用于计数小图片旋转的时间
count = 0;
}
#pragma -mark -doClickActions
//点击iCan图标,弹出图标
-(void)iCanClick
{
CGAffineTransform trans = iCanImageView.transform;
if(isRonating == NO)
{
CGAffineTransform newTrans = CGAffineTransformRotate(trans, -2*M_1_PI);
[UIView animateWithDuration:0.3 animations:^{
iCanImageView.transform = newTrans;
[NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(GoOut:) userInfo:nil repeats:YES];
}];
isRonating = YES;
}
else
{
CGAffineTransform newTrans = CGAffineTransformRotate(trans, 2*M_1_PI);
[UIView animateWithDuration:0.3 animations:^{
iCanImageView.transform = newTrans;
[NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(Back:) userInfo:nil repeats:YES];
}];
isRonating = NO;
}
}
//点击背景图,图标旋转回原位
-(void)bgClick
{
if(isRonating == YES)
{
CGAffineTransform trans = iCanImageView.transform;
CGAffineTransform newTrans = CGAffineTransformRotate(trans, 2*M_1_PI);
[UIView animateWithDuration:0.3 animations:^{
iCanImageView.transform = newTrans;
[NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(Back:) userInfo:nil repeats:YES];
}];
isRonating = NO;
}
}
//弹出的动作
-(void)GoOut:(id)sender
{
NSTimer *tiemr = (NSTimer *)sender;
count++;
[UIView animateWithDuration:0.2 animations:^{
menu_carImageView.center = [self location:CGPointMake(-10, 128)];
}];
if(count>2)
[UIView animateWithDuration:0.2 animations:^{
menu_movieImageView.center = [self location:CGPointMake(45, 100)];
}];
if(count>3)
[UIView animateWithDuration:0.2 animations:^{
menu_photoImageView.center = [self location:CGPointMake(88, 55)];
}];
if(count>4)
[UIView animateWithDuration:0.2 animations:^{
menu_setImageView.center = [self location:CGPointMake(105, -8)];
}];
if(count>5)
{
count = 0;
[tiemr invalidate];
}
}
//回归原位的动作
-(void)Back:(id)sender;
{
NSTimer *timer = (NSTimer *)sender;
count ++;
[UIView animateWithDuration:0.2 animations:^{
[self Ronate:menu_setImageView];
}];
if(count>3)
[UIView animateWithDuration:0.2 animations:^{
[self Ronate:menu_photoImageView];
}];
if(count>6)
[UIView animateWithDuration:0.2 animations:^{
menu_setImageView.center = iCanImageView.center;
}];
if(count>8)
[UIView animateWithDuration:0.2 animations:^{
menu_photoImageView.center = iCanImageView.center;
}];
if(count>5)
[UIView animateWithDuration:0.2 animations:^{
[self Ronate:menu_movieImageView];
}];
if(count>9)
[UIView animateWithDuration:0.2 animations:^{
menu_movieImageView.center = iCanImageView.center;
}];
if(count >7)
[UIView animateWithDuration:0.2 animations:^{
[self Ronate:menu_carImageView];
}];
if(count>10)
[UIView animateWithDuration:0.2 animations:^{
menu_carImageView.center = iCanImageView.center;
}];
if(count>11)
{
menu_carImageView.transform = CGAffineTransformMakeRotation(0);
menu_movieImageView.transform = CGAffineTransformMakeRotation(0);
menu_photoImageView.transform = CGAffineTransformMakeRotation(0);
menu_setImageView.transform = CGAffineTransformMakeRotation(0);
count = 0;
[timer invalidate];
}
}
-(CGPoint)location:(CGPoint)p
{
CGFloat x = CGRectGetMaxX(iCanImageView.frame);
CGFloat y = iCanImageView.center.y;
CGPoint pp = CGPointMake(x+p.x+20, y-p.y-10);
return pp;
}
-(void)Ronate:(UIImageView *)view
{
view.transform = CGAffineTransformMakeRotation(360.0f*count);
}
// 界面跳转
-(void)Jump:(id)sender
{
UIGestureRecognizer *t = (UIGestureRecognizer *)sender;
UIImageView *view = (UIImageView *)t.view;
UIEdgeInsets set;
set.top = 5.0f;
set.bottom = 5.0f;
set.left = 5.0f;
set.right = 5.0f;
if(view.tag == 3)
{
[self Scale:view];
}
else if(view.tag == 4)
{
[self Scale:view];
}
else if(view.tag == 5)
{
[self Scale:view];
}
else
{
[self Scale:view];
}
} // 放大和缩小图片
-(void)Scale:(UIImageView *)view
{
if(view.tag == 3)
{
CGFloat scale = 1.5;
CGAffineTransform trans = view.transform;
[UIImageView animateWithDuration:0.5 animations:^{
CGAffineTransform newTrans = CGAffineTransformScale(trans, scale, scale);
CGAffineTransform newTrans1 = CGAffineTransformScale(trans, 0.5, 0.5);
view.transform = newTrans;
menu_movieImageView.transform = newTrans1;
menu_photoImageView.transform = newTrans1;
menu_setImageView.transform = newTrans1;
view.alpha = 0.1;
menu_movieImageView.alpha = 0.1;
menu_photoImageView.alpha = 0.1;
menu_setImageView.alpha = 0.1;
} completion:^(BOOL finished) {
NSLog(@"--跳转到第一个图标的页面---");
}];
}
else if(view.tag == 4)
{
CGFloat scale = 1.5;
CGAffineTransform trans = view.transform;
[UIImageView animateWithDuration:0.5 animations:^{
CGAffineTransform newTrans = CGAffineTransformScale(trans, scale, scale);
CGAffineTransform newTrans1 = CGAffineTransformScale(trans, 0.5, 0.5);
view.transform = newTrans;
menu_carImageView.transform = newTrans1;
menu_photoImageView.transform = newTrans1;
menu_setImageView.transform = newTrans1;
view.alpha = 0.1;
menu_carImageView.alpha = 0.1;
menu_photoImageView.alpha = 0.1;
menu_setImageView.alpha = 0.1;
} completion:^(BOOL finished) {
NSLog(@"--跳转到第二个图标的页面---"); }];
}
else if(view.tag == 5)
{
CGFloat scale = 1.5;
CGAffineTransform trans = view.transform;
[UIImageView animateWithDuration:0.5 animations:^{
CGAffineTransform newTrans = CGAffineTransformScale(trans, scale, scale);
CGAffineTransform newTrans1 = CGAffineTransformScale(trans, 0.5, 0.5);
view.transform = newTrans;
menu_movieImageView.transform = newTrans1;
menu_carImageView.transform = newTrans1;
menu_setImageView.transform = newTrans1;
view.alpha = 0.1;
menu_movieImageView.alpha = 0.1;
menu_carImageView.alpha = 0.1;
menu_setImageView.alpha = 0.1;
} completion:^(BOOL finished) {
NSLog(@"--跳转到第三个图标的页面---"); }];
}
else
{
CGFloat scale = 1.5;
CGAffineTransform trans = view.transform;
[UIImageView animateWithDuration:0.5 animations:^{
CGAffineTransform newTrans = CGAffineTransformScale(trans, scale, scale);
CGAffineTransform newTrans1 = CGAffineTransformScale(trans, 0.5, 0.5);
view.transform = newTrans;
menu_movieImageView.transform = newTrans1;
menu_photoImageView.transform = newTrans1;
menu_carImageView.transform = newTrans1;
view.alpha = 0.1;
menu_movieImageView.alpha = 0.1;
menu_photoImageView.alpha = 0.1;
menu_carImageView.alpha = 0.1;
} completion:^(BOOL finished) {
NSLog(@"--跳转到第四个图标的页面---"); }]; }
} - (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}

【代码笔记】iOS-点击一个按钮会出现多个按钮的动画效果的更多相关文章
- 【代码笔记】iOS-点击一个button,出6个button
一,效果图. 二,工程图. 三,代码. RootViewController.h #import <UIKit/UIKit.h> //加入头文件 #import "DCPathB ...
- 【代码笔记】iOS-点击cell时候的动画翻转
一,效果图. 二,工程图. 三,代码. RootViewController.h #import <UIKit/UIKit.h> @interface RootViewController ...
- web前端学习(三)css学习笔记部分(8)-- SVN的介绍和应用、CSS动画效果、CSS3布局属性全接触
15.SVN的介绍和应用 15.1.SVN的介绍和应用课程概要 将代码进行集中管理,有版本号的进行迭代,方便集体工作的build流程 15.2.SVN的介绍 SVN是Subversion的简称,是一个 ...
- 完整版百度地图点击列表定位到对应位置并有交互动画效果demo
1.前言 将地图嵌入到项目中的需求很多,好吧,我一般都是用的百度地图.那么今天就主要写一个完整的demo.展示一个列表,点击列表的任一内容,在地图上定位到该位置,并有动画效果.来来来,直接上demo ...
- 【代码笔记】iOS-点击搜索按钮,或放大镜后都会弹出搜索框
一, 效果图. 二,工程图. 三,代码. RootViewController.h #import <UIKit/UIKit.h> #import "CLHSearchBar.h ...
- 【代码笔记】iOS-点击顶点处,弹出另一个小的界面
一,效果图. 二,文件目录. 三,代码. RootViewController.h #import <UIKit/UIKit.h> @interface RootViewControlle ...
- 【代码笔记】iOS-点击搜索跳转到另外一个页面
一,效果图. 二,工程图. 三,代码. RootViewController.h #import <UIKit/UIKit.h> @interface RootViewController ...
- 【代码笔记】iOS-点击城市中的tableView跳转到旅游景点的tableView,下面会有“显示”更多。
一,效果图. 二,工程图. 三,代码. RootViewController.h #import <UIKit/UIKit.h> @interface RootViewController ...
- 【代码笔记】iOS-点击加号增加书架,点击减号减少书架
一,效果图. 二,工程图. 三,代码. ReaderViewController.h #import <UIKit/UIKit.h> @interface ReaderViewContro ...
随机推荐
- mysql基于init-connect+binlog完成审计功能
目前社区版本的mysql的审计功能还是比较弱的,基于插件的审计目前存在于Mysql的企业版.Percona和MariaDB上,但是mysql社区版本有提供init-connect选项,基于此我们可以用 ...
- .net请求Webservice简单实现天气预报功能
很久没有接触Webservice的知识,今天稍微复习了一下关于webservice,简单做了一个天气预报的功能,虽然界面丑的厉害,但功能算是实现了,以下是效果展示. 这东西没什么难点,只是天气预报的功 ...
- SQL Server存储过程多角度介绍
什么是存储过程: 存储过程(Procedure)类似于C#语言中的方法,它是SQL语句和控制流语句的预编译集合.存储过程存储在数据库内,可由应用程序通过一个调用执行,而且允许用户声明变量.逻辑控制语句 ...
- linux 新建文件的命令
图形界面下就不用说了,终端下键入: touch test.java 就创建了一个新文件 test.java http://hovertree.com/menu/linux/ http://www.cn ...
- SSH服务器与Android通信(1)--服务器端发送数据
很多应用要求SSH服务器不仅和PC通信,还要和Android移动设备通信,这时就需要用到JSON了.其基本原理是服务器将数据转换成JSON格式,发送给Android客户端,客户端再将JSON格式的数据 ...
- Android文件的分割和组装
使用UDP数据包发送文件时,由于UDP数据包大小的限制,一个文件要放在几个UDP数据包里面发送,这就需要把一个文件分割成若干部分,分别放进若干个UDP数据包里面,在接收端,收到这些UDP数据包以后,再 ...
- 一个奇葩常见的问题 nginx 403 forbidden错误
今天安装dedecms,配置Nginx,然后生成一键生成静态页面,然后就没有然后了,所有栏目页面都显示nginx 403 forbidden. 一般来说nginx 的 403 Forbidden er ...
- GitHub for windows 使用方法
1. ①http://windows.github.com/ 下载GitHub for Windows,大约660K,一个在线安装程序,如图: ②.运行GitHubSetup.exe,如下图,可能会下 ...
- 七个结构模式之适配器模式(Adapter Pattern)
定义: 将一个接口转换为客户需要的另外一个接口,使接口不兼容的类型可以一起工作,也被称为包装器模式(Wrapper Patern). 结构图: Target:目标抽象类,客户所需要的接口. Adapt ...
- 搭建自己的ngrok服务(国内直接可用http://qydev.com/#)
ngrok 服务可以分配给你一个域名让你本地的web项目提供给外网访问, 特别适合向别人展示你本机的web demo 以及调试一些远程的API (比如微信公众号,企业号的开发) ngrok的官方服务可 ...