IOS开发进阶-按钮属性操作
来源:互联网 发布:聊天室程序源码 编辑:程序博客网 时间:2024/06/14 15:54
本案例主要的作用是进行按钮属性的操作,通过按钮属性的操作来进行图片的旋转,放大,缩小
左移动,右移动,上移动,下移动
最后并进行了代码重构,利用block。
#define kDelta 30@interface WSLViewController : UIViewController@property (weak, nonatomic) IBOutlet UIButton *display;- (IBAction)transfers:(id)sender;- (IBAction)lefmapRotate:(id)sender;- (IBAction)rightRotate:(id)sender;- (IBAction)zoomBig:(id)sender;- (IBAction)scaleSmall:(id)sender;@end
@implementation WSLViewController#pragma mark map移动,重构前- (IBAction)up:(id)sender { //oc语法规定:不允许直接修改 某个对象结构体属性的成员 //动画 [UIView beginAnimations:nil context:nil]; //设置动画的执行时间 [UIView setAnimationDuration:0.5]; //取出frame CGRect tempframe=_display.frame; //修改y值 tempframe.origin.y-=30; //重新赋值到按钮到frame _display.frame=tempframe; //动画尾部 [UIView commitAnimations]; NSLog(@"=shang=");}- (IBAction)left:(id)sender { //oc语法规定:不允许直接修改 某个对象结构体属性的成员 //动画 [UIView beginAnimations:nil context:nil]; //设置动画的执行时间 [UIView setAnimationDuration:0.5]; //取出frame CGRect tempframe=_display.frame; //修改y值 tempframe.origin.x-=30; //重新赋值到按钮到frame _display.frame=tempframe; //动画尾部 [UIView commitAnimations]; }- (IBAction)right:(id)sender { //oc语法规定:不允许直接修改 某个对象结构体属性的成员 //动画 [UIView beginAnimations:nil context:nil]; //设置动画的执行时间 [UIView setAnimationDuration:0.5]; //取出frame CGRect tempframe=_display.frame; //修改y值 tempframe.origin.x+=30; //重新赋值到按钮到frame _display.frame=tempframe; //动画尾部 [UIView commitAnimations];}- (IBAction)down:(id)sender { //oc语法规定:不允许直接修改 某个对象结构体属性的成员 //动画 [UIView beginAnimations:nil context:nil]; //设置动画的执行时间 [UIView setAnimationDuration:0.5]; //取出frame CGRect tempframe=_display.frame; //修改y值 tempframe.origin.y+=30; //重新赋值到按钮到frame _display.frame=tempframe; //动画尾部 [UIView commitAnimations];}#pragma mark map移动,重构后//代码重构- (IBAction)transfers:(id)sender { //oc语法规定:不允许直接修改 某个对象结构体属性的成员 //动画 [UIView beginAnimations:nil context:nil]; //设置动画的执行时间 [UIView setAnimationDuration:0.5]; //取出frame CGRect tempframe=_display.frame; int tag=[sender tag]; switch (tag) { case 1: //修改y值 tempframe.origin.y-=kDelta; break; case 2: //修改x值 tempframe.origin.x+=kDelta; break; case 3: //修改y值 tempframe.origin.y+=kDelta; break; case 4: //修改x值 tempframe.origin.x-=kDelta; break; default: break; } //重新赋值到按钮到frame _display.frame=tempframe; //动画尾部 [UIView commitAnimations]; }#pragma mark map旋转- (IBAction)lefmapRotate:(id)sender { //弧度 [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:0.5]; _display.transform =CGAffineTransformRotate(_display.transform, -M_PI_4); [UIView commitAnimations];}- (IBAction)rightRotate:(id)sender { //弧度 [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:0.5]; _display.transform =CGAffineTransformRotate(_display.transform, M_PI_4); [UIView commitAnimations];}- (IBAction)zoomBig:(id)sender { [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:0.5]; _display.transform=CGAffineTransformScale(_display.transform, 1.2, 1.2); [UIView commitAnimations];}- (IBAction)scaleSmall:(id)sender { [UIView beginAnimations:nil context:nil]; [UIView setAnimationDuration:0.5]; _display.transform=CGAffineTransformScale(_display.transform, 0.8, 0.8); [UIView commitAnimations];}@end
代码重构后,如下:
#define kDelta 30@interface WSLViewController : UIViewController@property (weak, nonatomic) IBOutlet UIButton *display;- (IBAction)transfers:(id)sender;- (IBAction)lefmapRotate:(id)sender;- (IBAction)rightRotate:(id)sender;- (IBAction)zoomBig:(id)sender;- (IBAction)scaleSmall:(id)sender;@end
//// WSLViewController.m// tupian//// Created by 王胜利 on 14-3-30.// Copyright (c) 2014年 wsl. All rights reserved.//#import "WSLViewController.h"@implementation WSLViewController//代码重构//利用bock进行重构代码-(void)btnClick:(id)sender block:(void (^)())block{ [UIView beginAnimations:nil context:nil]; //设置动画的执行时间 [UIView setAnimationDuration:0.5]; block(); [UIView commitAnimations];}#pragma mark map移动,重构后//代码重构- (IBAction)transfers:(id)sender { [self btnClick:sender block:^{ CGRect tempframe=_display.frame; int tag=[sender tag]; switch (tag) { case 1: //修改y值 tempframe.origin.y-=kDelta; break; case 2: //修改x值 tempframe.origin.x+=kDelta; break; case 3: //修改y值 tempframe.origin.y+=kDelta; break; case 4: //修改x值 tempframe.origin.x-=kDelta; break; default: break; } //重新赋值到按钮到frame _display.frame=tempframe; }];}#pragma mark map旋转- (IBAction)lefmapRotate:(id)sender { [self btnClick:sender block:^{ _display.transform =CGAffineTransformRotate(_display.transform, -M_PI_4); }];}- (IBAction)rightRotate:(id)sender { [self btnClick:sender block:^{ _display.transform =CGAffineTransformRotate(_display.transform, M_PI_4); }];}- (IBAction)zoomBig:(id)sender { [self btnClick:sender block:^{ _display.transform=CGAffineTransformScale(_display.transform, 1.2, 1.2); }];}- (IBAction)scaleSmall:(id)sender { [self btnClick:sender block:^{ _display.transform=CGAffineTransformScale(_display.transform, 0.8, 0.8); }];}@end
0 0
- IOS开发进阶-按钮属性操作
- IOS开发笔记-01按钮操作-12.frame&bounds¢er属性
- iOS开发 - UIButton 按钮操作
- iOS开发-进阶:数据库操作(使用FMDB)
- iOS开发按钮点击操作的实现
- IOS开发进阶-入门
- iOS开发-进阶:沙盒操作与机制
- IOS开发笔记-01按钮操作-01入学须知
- IOS开发笔记-01按钮操作-03.加法计算器界面搭建
- IOS开发笔记-01按钮操作-08.git的简单使用
- IOS开发笔记-01按钮操作-09.私有扩展&IBAction
- IOS开发笔记-01按钮操作-10.创建应用程序中的一些细节
- IOS开发笔记-01按钮操作-11.UI控件概述
- IOS开发笔记-01按钮操作-13.上下左右移动 14.代码优化
- IOS开发基础—按钮(button)基本操作
- iOS开发进阶
- iOS开发进阶
- iOS开发进阶
- coco笔记:C算式算法总结(二)
- 关于封装类的缓存
- Android 应用优化 内存、性能
- 【rqnoj106】最大加权矩形(1418)
- MFC 加载png图片
- IOS开发进阶-按钮属性操作
- Sublime Text2 使用教程
- jboss AS 7开放ip供其他机器访问
- getWidth与getMeasureWidth
- 互斥锁的理解
- LibGdx--PulleyJoint滑轮关节
- 原形文档使用
- Java框架数据库连接池比较(c3p0,dbcp和proxool)
- 设计模式之单例模式(Singleton)摘录