ios学习-控制按钮图片的走动和变换
一.项目要求:制作一个界面,通过点击按钮来控制头像(按钮)向上,向下,向左,向右移动,可以左旋转,右旋转,以及放大和缩小。
3.点击main.storyboard,在右下角拖9个Button控件到storyboard的相应位置
四.代码:
ViewController.h文件:
// // ViewController.h // 控制按钮 // // Created by yongjianyu on 15/11/25. // Copyright (c) 2015年 yongjianyu. All rights reserved. // #import <UIKit/UIKit.h> @interface ViewController : UIViewController @property (weak, nonatomic) IBOutlet UIButton *btn; - (IBAction)up:(id)sender; - (IBAction)down:(id)sender; - (IBAction)left:(id)sender; - (IBAction)right:(id)sender; - (IBAction)leftRotate:(id)sender; - (IBAction)rightRotate:(id)sender; - (IBAction)bigger:(id)sender; - (IBAction)smaller:(id)sender; @end
ViewController.m文件:
// // ViewController.m // 控制按钮 // // Created by yongjianyu on 15/11/25. // Copyright (c) 2015年 yongjianyu. All rights reserved. // #import "ViewController.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } //向上移动按钮 - (IBAction)up:(id)sender { //动画(头部) [UIView beginAnimations:nil context:nil]; //设置动画的时间 [UIView setAnimationDuration:1.0]; //OC语法规定,不允许直接修改某个对象中结构体属性的成员 //先取出frame的值,赋值给中间变量 CGRect tempFrame = _btn.frame; //修改y值 tempFrame.origin.y -= 50; //重新给按钮的frame赋值 _btn.frame = tempFrame; //动画(尾部) [UIView commitAnimations]; } //向下移动按钮 - (IBAction)down:(id)sender { [UIView beginAnimations:nil context:nil]; //设置动画持续时间为1.0秒 [UIView setAnimationDuration:1.0]; CGRect tempFrame = _btn.frame; tempFrame.origin.y += 50; _btn.frame = tempFrame; [UIView commitAnimations]; } //向左移动按钮 - (IBAction)left:(id)sender { [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:1.0]; CGRect tempFrame = _btn.frame; tempFrame.origin.x -= 50; _btn.frame = tempFrame; [UIView commitAnimations]; } //向右移动按钮 - (IBAction)right:(id)sender { [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:1.0]; CGRect tempFrame = _btn.frame; tempFrame.origin.x += 50; _btn.frame = tempFrame; [UIView commitAnimations]; } //向左旋转按钮 - (IBAction)leftRotate:(id)sender { [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:1.0]; //向左旋转PI/4 _btn.transform = CGAffineTransformRotate(_btn.transform, - M_PI_4); [UIView commitAnimations]; } //向右旋转按钮 - (IBAction)rightRotate:(id)sender { [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:1.0]; _btn.transform = CGAffineTransformRotate(_btn.transform, + M_PI_4); [UIView commitAnimations]; } //边长放大到原来的1.2倍 - (IBAction)bigger:(id)sender { [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:1.0]; _btn.transform = CGAffineTransformScale(_btn.transform, 1.2, 1.2); [UIView commitAnimations]; } //边长变为原来的0.8 - (IBAction)smaller:(id)sender { [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:1.0]; _btn.transform = CGAffineTransformScale(_btn.transform, 0.8, 0.8); [UIView commitAnimations]; } @end
五.代码重构
ViewController.h文件
#import <UIKit/UIKit.h> @interface ViewController : UIViewController - (IBAction)reset:(id)sender; @property (weak, nonatomic) IBOutlet UIButton *btn; - (IBAction)run:(id)sender; - (IBAction)rotate:(id)sender; - (IBAction)scale:(id)sender; @end
ViewController.m文件
// // ViewController.m // Button // // Created by yongjianyu on 15/11/22. // Copyright (c) 2015年 yongjianyu. All rights reserved. // #import "ViewController.h" #define KDelta 50 @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. } - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. } - (IBAction)run:(id)sender { // [UIView beginAnimations:nil context:nil]; // [UIView setAnimationDuration:1.0]; // // CGRect tempFrame = _btn.frame; CGPoint tempCenter= _btn.center; // NSInteger tag = [sender tag]; // switch (tag) { case 1: // // tempFrame.origin.y -= KDelta; tempCenter.y -= KDelta; break; case 3: // // tempFrame.origin.y += KDelta; tempCenter.y += KDelta; break; // case 2: // tempFrame.origin.x += KDelta; tempCenter.x += KDelta; break; // case 4: // tempFrame.origin.x -= KDelta; tempCenter.x -= KDelta; break; default: break; } // // _btn.frame = tempFrame; _btn.center = tempCenter; // [UIView commitAnimations]; } - (IBAction)rotate:(id)sender { [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:1.0]; NSInteger tag = [sender tag]; if (5==tag) { _btn.transform = CGAffineTransformRotate(_btn.transform, - M_PI_4); }else (_btn.transform = CGAffineTransformRotate(_btn.transform,+ M_PI_4)); [UIView commitAnimations]; } - (IBAction)scale:(id)sender { [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:1.0]; NSInteger tag = [sender tag]; if (7==tag) { _btn.transform = CGAffineTransformScale(_btn.transform, 1.2, 1.2); [UIView commitAnimations]; }else{ _btn.transform = CGAffineTransformScale(_btn.transform, 0.8, 0.8); } } - (IBAction)reset:(id)sender { [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:1.0]; _btn.transform = CGAffineTransformIdentity; [UIView commitAnimations]; } @end
六.用纯代码创建Button,创建UI界面
// // ViewController.m // 02-通过代码创建按钮 // // Created by yongjianyu on 15/11/25. // Copyright (c) 2015年 yongjianyu. All rights reserved. // #import "ViewController.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. //头像 UIButton *btn = [[UIButton alloc]init]; btn.frame = CGRectMake(0, 0, 100, 100); CGFloat centerX = self.view.frame.size.width * 0.5; CGFloat centerY = self.view.frame.size.height * 0.25; btn.center = CGPointMake(centerX, centerY); UIImage *nomal = [UIImage imageNamed:@"adomikao.png"]; [btn setBackgroundImage:nomal forState:UIControlStateNormal]; [btn setTitle:@"Adomikao" forState:UIControlStateNormal]; [btn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; UIImage *hightlight = [UIImage imageNamed:@"adomikao1.png"]; [btn setBackgroundImage:hightlight forState:UIControlStateHighlighted]; [btn setTitle:@"yuyongjian" forState:UIControlStateHighlighted]; [btn setTitleColor:[UIColor redColor] forState:UIControlStateHighlighted]; // [btn addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:btn]; //向上 UIButton *up = [[UIButton alloc]init]; up.frame = CGRectMake(0, 0, 25, 25); CGFloat upCenterX = self.view.frame.size.width * 0.25; CGFloat upCenterY = self.view.frame.size.height * 0.625; up.center = CGPointMake(upCenterX, upCenterY); UIImage *upNomal = [UIImage imageNamed:@"up.png"]; [up setBackgroundImage:upNomal forState:UIControlStateNormal]; UIImage *upHightlight = [UIImage imageNamed:@"up1.jpg"]; [up setBackgroundImage:upHightlight forState:UIControlStateHighlighted]; [self.view addSubview:up]; [up addTarget:self action:@selector(upClick:) forControlEvents:UIControlEventTouchUpInside]; //向下 UIButton *down = [[UIButton alloc]init]; down.frame = CGRectMake(0, 0, 25, 25); CGFloat downCenterX = self.view.frame.size.width * 0.25; CGFloat downCenterY = self.view.frame .size.height * 0.875; down.center = CGPointMake(downCenterX, downCenterY); UIImage *downNormal = [UIImage imageNamed:@"down.png"]; [down setBackgroundImage:downNormal forState:UIControlStateNormal]; UIImage *downheight = [UIImage imageNamed:@"sown1.jpg"]; [down setBackgroundImage:downheight forState:UIControlStateHighlighted]; [self.view addSubview:down]; //向左 UIButton *left = [[UIButton alloc]init]; left.frame = CGRectMake(0, 0, 25, 25); CGFloat leftCenterX = self.view.frame.size.width * 0.125; CGFloat leftCenterY = self.view.frame.size.height * 0.75; left.center = CGPointMake(leftCenterX, leftCenterY); UIImage *leftNormal = [UIImage imageNamed:@"left.png"]; [left setBackgroundImage:leftNormal forState:UIControlStateNormal]; UIImage *leftHighlight = [UIImage imageNamed:@"left1.jpg"]; [left setBackgroundImage:leftHighlight forState:UIControlStateHighlighted]; [self.view addSubview:left]; //向右 UIButton *right = [[UIButton alloc]init]; right.frame = CGRectMake(0, 0, 25, 25); CGFloat rightCenterX = self.view.frame.size.width * 0.375; CGFloat rightcenterY = self.view.frame.size.height * 0.75; right.center = CGPointMake(rightCenterX, rightcenterY); UIImage *rightNormal = [UIImage imageNamed:@"right.png"]; [right setBackgroundImage:rightNormal forState:UIControlStateNormal]; UIImage *rightHighlight = [UIImage imageNamed:@"right1.jpg"]; [right setBackgroundImage:rightHighlight forState:UIControlStateHighlighted]; [self.view addSubview:right]; //放大 UIButton *big = [[UIButton alloc]init]; big.frame = CGRectMake(0, 0, 25, 25); CGFloat bigCenterX = self.view.frame.size.width * 0.625; CGFloat bigCenterY = self.view.frame.size.height * 0.625; big.center = CGPointMake(bigCenterX, bigCenterY); UIImage *bigNormal = [UIImage imageNamed:@"plus.jpg"]; [big setBackgroundImage:bigNormal forState:UIControlStateNormal]; UIImage *bighighlight = [UIImage imageNamed:@"plus1.png"]; [big setBackgroundImage:bighighlight forState:UIControlStateHighlighted]; [self.view addSubview:big]; //缩小 UIButton *small = [[UIButton alloc]init]; small.frame = CGRectMake(0, 0, 25, 25); CGFloat smallCenterX = self.view.frame.size.width * 0.875; CGFloat smallCenterY = self.view.frame.size.height * 0.625; small.center = CGPointMake(smallCenterX, smallCenterY); UIImage *smallNormal = [UIImage imageNamed:@"minus.png"]; [small setBackgroundImage:smallNormal forState:UIControlStateNormal]; UIImage *smallHighlight = [UIImage imageNamed:@"minus1.png"]; [small setBackgroundImage:smallHighlight forState:UIControlStateHighlighted]; [self.view addSubview:small]; //向左旋转 UIButton *leftRotate = [[UIButton alloc]init]; leftRotate.frame = CGRectMake(0, 0, 25, 25); CGFloat leftRotateCenterX = self.view.frame.size.width * 0.625; CGFloat leftRotateCenterY = self.view.frame.size.height * 0.875; leftRotate.center = CGPointMake(leftRotateCenterX, leftRotateCenterY); UIImage *leftRotateNormal = [UIImage imageNamed:@"anticlockwise.jpg"]; [leftRotate setBackgroundImage:leftRotateNormal forState:UIControlStateNormal]; UIImage *leftRotateHighlight = [UIImage imageNamed:@"anticlokwise1.png"]; [leftRotate setBackgroundImage:leftRotateHighlight forState:UIControlStateHighlighted]; [self.view addSubview:leftRotate]; //向右旋转 UIButton *rightRotate = [[UIButton alloc]init]; rightRotate.frame = CGRectMake(0, 0, 25, 25); CGFloat rightRotateCenterX = self.view.frame.size.width * 0.875; CGFloat rightRotateCenterY = self.view.frame.size.height * 0.875; rightRotate.center = CGPointMake(rightRotateCenterX, rightRotateCenterY); UIImage *rightRotateNormal = [UIImage imageNamed:@"clockwise.png"]; [rightRotate setBackgroundImage:rightRotateNormal forState:UIControlStateNormal]; UIImage *rightRotateHighlight = [UIImage imageNamed:@"clockwise1.png"]; [rightRotate setBackgroundImage:rightRotateHighlight forState:UIControlStateHighlighted]; [self.view addSubview:rightRotate]; } -(void)upClick:(UIButton *)up{ NSLog(@"------up"); CGRect tempFrame = _btn.frame; tempFrame.origin.y -= 10; _btn.frame = tempFrame; } @end
ios学习-控制按钮图片的走动和变换的更多相关文章
- iOS学习-压缩图片(改变图片的宽高)
压缩图片,图片的大小与我们期望的宽高不一致时,我们可以将其处理为我们想要的宽高. 传入想要修改的图片,以及新的尺寸 -(UIImage*)imageWithImage:(UIImage*)image ...
- ios学习笔记图片+图片解释(c语言 oc语言 ios控件 ios小项目 ios小功能 swift都有而且笔记完整喔)
下面是目录其中ios文件夹包括了大部分ios控件的介绍和演示,swift的时完整版,可以学习完swift(这个看的是swift刚出来一周的视频截图,可能有点赶,但是完整),c语言和oc语言的也可以完整 ...
- 【原】iOS学习之图片拉伸处理(类似qq的气泡)
原理是拉伸里面的内容,将边保护起来 方法1: ①[image resizableImageWithCapInsets:UIEdgeInsetsMake(, , , )]; ②[image resiza ...
- ios 学习 广告图片轮播器
// // ViewController.m // 图片轮播器 // // Created by zjj on 15/5/23. // Copyright (c) 2015年 zjj. All rig ...
- [置顶] iOS学习笔记47——图片异步加载之EGOImageLoading
上次在<iOS学习笔记46——图片异步加载之SDWebImage>中介绍过一个开源的图片异步加载库,今天来介绍另外一个功能类似的EGOImageLoading,看名字知道,之前的一篇学习笔 ...
- iOS学习笔记31-从图册获取图片和视频
一.从图册中获取本地图片和视频 从图册中获取文件,我们使用的是UIImagePickerController,这个类我们在之前的摄像头中使用过,这里是链接:iOS学习笔记27-摄像头,这里我们使用的是 ...
- ios 学习线路(图片)(摘录)
iOS学习路线
- iOS学习——UIView的研究
在iOS开发中,我们知道有一个共同的基类——NSObject,但是对于界面视图而言,UIView是非常重要的一个类,UIView是很多视图控件的基类,因此,对于UIView的学习闲的非常有必要.在iO ...
- iOS学习——核心动画之Layer基础
iOS学习——核心动画之Layer基础 1.CALayer是什么? CALayer我们又称它叫做层.在每个UIView内部都有一个layer这样一个属性,UIView之所以能够显示,就是因为它里面有这 ...
随机推荐
- Linux 下 YUM 安装 Percona Server 5.6
Percona Server 是 MySQL 的衍生版,专注于 Linux/BSD 下 MySQL 数据库服务器的改进, 在功能和性能上较 MySQL 有着显著的提升. Percona Server ...
- ubuntu开启SSH服务
SSH分客户端openssh-client和openssh-server 如果你只是想登陆别的机器的SSH只需要安装openssh-client(ubuntu有默认安装,如果没有则sudo apt-g ...
- CentOS下通过yum安装svn及配置
CentOS下通过yum安装svn及配置 1.环境centos5.5 2.安装svnyum -y install subversion 3.配置 建立版本库目录mkdir /www/svndata s ...
- python学习道路(day11note)(协程,同步与异步的性能区别,url爬网页,select,RabbitMq)
1.协程 #协程 又称微线程 是一种用户的轻量级线程 程序级别代码控制 就不用加机器 #不同函数 = 不同任务 A函数切到B函数没有进行cpu级别的切换,而是程序级别的切换就是协程 yelied #单 ...
- ThinPHP基础
注:约定([书写]规则)胜于配置 *测试连接是否成功:localhost/tp/index.php1.localhost/tp/index.php(入口文件)/Home(模块名)/Index(控制器名 ...
- spring bean的重新加载
架构体系 在谈spring bean的重新加载前,首先我们来看看spring ioc容器. spring ioc容器主要功能是完成对bean的创建.依赖注入和管理等功能,而这些功能的实现是有下面几个组 ...
- 如何编写自己的Arduino库?
一开始写Arduino 的时候很不习惯,没有main函数,因为好多东西都被隐藏了.一直想搞清楚,以便编写自己的库文件.于是研究一下午,下面是一些总结. Arduino工程的初步认识 一.目录规范 当你 ...
- EasyUI分页
$("#tanModelBox1").css("display","none"); $('#dg').datagrid({ fitColum ...
- PorterDuffXfermode的用法
1.下面的Xfermode子类可以改变这种行为: AvoidXfermode 指定了一个颜色和容差,强制Paint避免在它上面绘图(或者只在它上面绘图). PixelXorXfermode 当覆盖 ...
- 使用Photoshop不改变图片尺寸,保存图片到30K以下的解决办法