此demo用到了block来抽取重复代码,使demo代码美观。
目前还有个BUG,旋转后,上下移动会导致图片消失。
// // HelloWorldViewController.h // 图片移动 // // Created by mahongmin on 14-5-10. // Copyright (c) 2014年 mahongmin. All rights reserved. // #import <UIKit/UIKit.h> @interface HelloWorldViewController : UIViewController @property (weak, nonatomic) IBOutlet UIButton *btn_show; @property (weak, nonatomic) IBOutlet UIImageView *flowerImage; - (IBAction)move:(id)sender; - (IBAction)rotation:(id)sender; - (IBAction)zoom:(id)sender; - (IBAction)restore:(id)sender; - (void)btnClickWithBlock:(void (^)())block; @end
===============
//
// HelloWorldViewController.m
// 图片移动
//
// Created by mahongmin on 14-5-10.
// Copyright (c) 2014年 mahongmin. All rights reserved.
//
#import "HelloWorldViewController.h"
@interface HelloWorldViewController ()
{
CGRect initRect;
}
@end
@implementation HelloWorldViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
initRect = self.flowerImage.frame;
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
/*
主义block用法
-(void)btnClickWithBlock:(void(^)())abc{
}
(void(^)())是block类型
abc是block的形参
*/
- (void)btnClickWithBlock:(void (^)())block {
[UIView beginAnimations:NULL context:NULL];
[UIView setAnimationDuration:1];
block();
[UIView commitAnimations];
}
#pragma mark - 控制图片上下所有移动
- (IBAction)move:(id)sender {
[self btnClickWithBlock:^{
CGRect frame = self.flowerImage.frame;
int delta = 50;
switch ([sender tag]) {
case 0://上
frame.origin.y -= delta;
break;
case 1://右
frame.origin.x += delta;
break;
case 2://下
frame.origin.y += delta;
break;
case 3://左
frame.origin.x -= delta;
break;
default:
break;
}
self.flowerImage.frame = frame;
}];
}
#pragma mark - 旋转
- (IBAction)rotation:(id)sender {
[self btnClickWithBlock:^{
self.flowerImage.transform = CGAffineTransformRotate(self.flowerImage.transform, [sender tag] == 4 ? -M_PI_4 : M_PI_4);
}];
}
#pragma mark - 放大缩小
- (IBAction)zoom:(id)sender {
[self btnClickWithBlock:^{
CGFloat scale = [sender tag] == 6 ? 1.1 : 0.9;
self.flowerImage.transform = CGAffineTransformScale(self.flowerImage.transform, scale, scale);
}];
}
- (IBAction)restore:(id)sender {
[self btnClickWithBlock:^{
self.flowerImage.frame = initRect;
self.flowerImage.transform = CGAffineTransformIdentity;
}];
}
@end