`

IOS 图片放大缩小移动,使用block精简代码

    博客分类:
  • IOS
 
阅读更多

此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
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics