IOS 图片放大缩小移动,使用block精简代码
此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