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之所以能够显示,就是因为它里面有这 ...
随机推荐
- 获取移除指定Url参数(原创)
/// <summary> /// 移除指定的Url参数 /// 来自:http://www.cnblogs.com/cielwater /// </summary> /// ...
- Moses训练与测试
参考:http://cache.baiducontent.com/c?m=9d78d513d9991cf00ffa940f47408f711925df252bd6a0502294ca5f92140d1 ...
- Unity学习疑问记录之界面适配
Unity3d UGUI 界面适配 实例解析 三种适配方式 http://www.mamicode.com/info-detail-475563.html
- 小型移动 webApp Demo 知识点整理
包括内容: css初始化.css全局设置.常用meat标签.rem适配.flex布局.相关技巧(手势库使用.多行截字.1像素边线.点击状态.placeholder居中等) reset 引用 norma ...
- Java实现MySQL数据库导入
距离上班还有一段时间.现在总结一下如何使用Java语言实现MySQL数据库导入: 首先新建名为test的数据库: 其次执行下面Java代码: import java.io.File; import j ...
- Air 压力测试
VersionCode:{311} VersionName:{3.1.1} Force:{yes} Supply:{no} ToolsBlack:{yes}
- 分析-eclipse已经导入jar包了,但还是出现classNotFound异常
场景:分析-eclipse已经导入jar包了,但还是出现classNotFound异常 分析--eclipse已经导入jar包了,但还是出现classNotFound错误 最近在做一个web项目时,由 ...
- 一起来做chrome扩展《基础介绍》
首先说明,chrome的扩展并不它的插件,网上很多说写插件,其实都是说的扩展.写扩展并不复杂,只要根据chrome提供的一系列的API进行就可以实现很多的功能.只是对API的学习是有代价的,加上国内访 ...
- 谈一谈php://filter的妙用
php://filter是PHP中独有的协议,利用这个协议可以创造很多"妙用",本文说几个有意思的点,剩下的大家自己下去体会.本来本文的思路我上半年就准备拿来做XDCTF2016的 ...
- JMeter学习-026-JMeter 分布式(远程)参数化测试实例
以前文所述对文章详情的HTTP请求进行性能测试为例.日常实际场景中,不可能所有的人都在同时访问一篇文章,而是多人访问不同的文章,因而需要对文章编号进行参数化,以更好的模拟日常的性能测试场景.同时,因文 ...