一,效果图。

二,工程图。

三,代码。

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-点击一个按钮会出现多个按钮的动画效果的更多相关文章

  1. 【代码笔记】iOS-点击一个button,出6个button

    一,效果图. 二,工程图. 三,代码. RootViewController.h #import <UIKit/UIKit.h> //加入头文件 #import "DCPathB ...

  2. 【代码笔记】iOS-点击cell时候的动画翻转

    一,效果图. 二,工程图. 三,代码. RootViewController.h #import <UIKit/UIKit.h> @interface RootViewController ...

  3. web前端学习(三)css学习笔记部分(8)-- SVN的介绍和应用、CSS动画效果、CSS3布局属性全接触

    15.SVN的介绍和应用 15.1.SVN的介绍和应用课程概要 将代码进行集中管理,有版本号的进行迭代,方便集体工作的build流程 15.2.SVN的介绍 SVN是Subversion的简称,是一个 ...

  4. 完整版百度地图点击列表定位到对应位置并有交互动画效果demo

    1.前言 将地图嵌入到项目中的需求很多,好吧,我一般都是用的百度地图.那么今天就主要写一个完整的demo.展示一个列表,点击列表的任一内容,在地图上定位到该位置,并有动画效果.来来来,直接上demo  ...

  5. 【代码笔记】iOS-点击搜索按钮,或放大镜后都会弹出搜索框

    一, 效果图. 二,工程图. 三,代码. RootViewController.h #import <UIKit/UIKit.h> #import "CLHSearchBar.h ...

  6. 【代码笔记】iOS-点击顶点处,弹出另一个小的界面

    一,效果图. 二,文件目录. 三,代码. RootViewController.h #import <UIKit/UIKit.h> @interface RootViewControlle ...

  7. 【代码笔记】iOS-点击搜索跳转到另外一个页面

    一,效果图. 二,工程图. 三,代码. RootViewController.h #import <UIKit/UIKit.h> @interface RootViewController ...

  8. 【代码笔记】iOS-点击城市中的tableView跳转到旅游景点的tableView,下面会有“显示”更多。

    一,效果图. 二,工程图. 三,代码. RootViewController.h #import <UIKit/UIKit.h> @interface RootViewController ...

  9. 【代码笔记】iOS-点击加号增加书架,点击减号减少书架

    一,效果图. 二,工程图. 三,代码. ReaderViewController.h #import <UIKit/UIKit.h> @interface ReaderViewContro ...

随机推荐

  1. log4net的配置详解

    log4net是一款优秀的第三方日志框架,可以很容易的加载到开发项目中(引用log4net的dll,再配置些基本参数即可),帮助程序员把日志信息输出到各种不同的目标,常见的有文本.数据库.window ...

  2. 【原创】.NET Web API之filter ActionFilterAttribute 过滤器使用

    1.在filter类里面引用,与MVC里面的不同 using System.Web.Http.Controllers; using System.Web.Http.Filters; 2.filter类 ...

  3. JQuery新闻滚动的实现方法(常用笔记1)

    .mouseover() //经过子元素也会触发 .mouseenter() //经过被选元素才会触发 .mouseout() //离开子元素也会触发 .mouseleave() //离开被选元素才会 ...

  4. 【UWP】UI适配整理

    做UWP有几个月了,期间发布了几个应用,在这里整理一下适配相关的一些东西,UWP关于UI的适配主要有两种方式: 1.VisualState+Trigger:通过触发器出发界面更变,通常在Desktop ...

  5. 【iOS】关联属性存取数据

    有时候我们需要在现有的类存放一些额外的信息,通常的做法是继承一个子类,然后定义新增加的属性,然而如果我们为每个需要的类都添加一个类显得太麻烦了,objc提供了一个关联属性的特性,可以给一个对象关联一个 ...

  6. C# Redis使用之StackExchange

    第1章   安装 在.NET平台使用Redis需要做如下准备工作: 创建一个新的Visual Studio应用或者打开一个已经存在的Visual Studio应用. 打开NuGet程序包 搜索并添加S ...

  7. PagerTabStrip及自定义的PagerTab

    如图是效果图      开发中经常会用到上面是一个Tab下面是一个ViewPager(ViewPager再包含几个Fragment),当点击Tab或是滑动ViewPager,Tab及ViewPager ...

  8. x8086汇编在显存中显示字符串

    题目:在屏幕中间显示绿色,绿底红色,白底蓝色的字符串‘welcome to masm!’ 80X25彩色字符模式显示缓冲区的结构: 在内存地址结构中,B8000H~BFFFFH共32KB的空间,为80 ...

  9. 线程池之 Callable、Future、FutureTask

    java线程中的异步和同步,并不是走路,一定要搞清楚.那么join方法嘛,就是异步变同步.线程阻塞,就再楼下一直等着它想要的状态出现喽.直接上代码,先来看Future获取线程执行结果的使用示例: pu ...

  10. PHP替代正则匹配的高效函数

    strpos() - 查找字符串首次出现的位置 strrpos() 函数查找字符串在另一字符串中最后一次出现的位置(区分大小写). strripos() 函数查找字符串在另一字符串中最后一次出现的位置 ...