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

 

 

 

 

 
 
  • 大小: 77.8 KB
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值