【代码笔记】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 ...
随机推荐
- Fiddler使用AutoResponder进行本地文件和线上文件的映射
直入正题.. 刚刚想写篇总结,照常登上博客园添加新随笔,写了百来字发现有什么不对劲 编辑器去哪儿了... 心想重新登录应该就OK了吧,点击退出然后重新登录 按钮一直显示加载中...简直就没法登录嘛.. ...
- 理解TCP/IP三次握手与四次挥手的正确姿势
背景 注:以下情节纯属虚构,我并没有女朋友==. 和女朋友异地恋一年多,为了保持感情我提议每天晚上视频聊天一次. 从好上开始,到现在,一年多也算坚持下来了. 问题 有时候聊天的过程中,我的网络或者她的 ...
- Quartz.net使用总结
进来项目中用到了 任务调度 来实现短信发送网关,所以这里分享下 Quartz.net 的使用经验. 任务调度选用了 Quartz.net 来实现,之前用的是C#中自带的window服务安装,这次 ...
- Oracle--(Hierarchical Queries)层级查询
内容来自: Oracle® Database SQL Language Reference 11g Release 2 (11.2) E41084-03. empolyees表来自hr方案,wareh ...
- jsp输出所有请求头的名称
Enumeration headernames=request.getHeaderNames(); while(headernames.hasMoreElements()){ String heade ...
- Retrieving Out Params From a Stored Procedure With Python
http://www.rodneyoliver.com/blog/2013/08/08/retrieving-out-params-from-a-stored-procedure-with-pytho ...
- NYOJ 737---石子归并(GarsiaWachs算法)
原题链接 描述 有N堆石子排成一排,每堆石子有一定的数量.现要将N堆石子并成为一堆.合并的过程只能每次将相邻的两堆石子堆成一堆,每次合并花费的代价为这两堆石子的和,经过N-1次合并后成为一堆.求 ...
- python日志模块---logging
1.将日志打印到屏幕 import logging logging.debug('This is debug message---by liu-ke') logging.info('This is i ...
- mysql与oracle常用函数及数据类型对比
最近在转一个原来使用oracle,打算改为mysql的系统,有些常用的oracle函数的mysql实现顺便整理了下,主要是系统中涉及到的(其实原来是专门整理过一个详细doc的,只是每次找word麻烦) ...
- 当子查询碰上NULL
情景: 现在有如图两个表,boy和girl,对应着Boy和Girl两个bean,有共同字段id.name,另外boy还有个外键grilfriend(指向girl的id) 现在要查询所有的Boy,如果有 ...