点击图片进行放大,再次点击就缩小到原来的地方

首先写一个类  写放大缩小的方法
//
//  BigImage.h
//  TapImageBigAndSmall
//
//  Created by lxy on 15-4-7.
//  Copyright (c) 2015年 Shenzhen MSD Technology Co.,LTD. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>

@interface BigImage : NSObject

+(void)showImage:(UIImageView *)avatarImageView;
+(void)hideImage:(UITapGestureRecognizer*)tap;
@end

实现方法

//
//  BigImage.m
//  TapImageBigAndSmall
//
//  Created by lxy on 15-4-7.
//  Copyright (c) 2015年 Shenzhen MSD Technology Co.,LTD. All rights reserved.
//

#import "BigImage.h"

@implementation BigImage

static CGRect oldframe;

+(void)showImage:(UIImageView *)avatarImageView
{
    UIImage *image = avatarImageView.image;
    UIWindow *window = [UIApplication sharedApplication].keyWindow;
    UIView *backgroundView = [[UIView alloc]initWithFrame:CGRectMake( 0,  0,  [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height)];
    oldframe = [avatarImageView convertRect:avatarImageView.bounds toView:window];
    backgroundView.backgroundColor = [UIColor blackColor];
    backgroundView.alpha = 0;
    UIImageView *imageView = [[UIImageView alloc]initWithFrame:oldframe];
    imageView.image = image;
    imageView.tag = 1;
    [backgroundView addSubview:imageView];
    [window addSubview:backgroundView];
    
    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(hideImage:)];
    [backgroundView addGestureRecognizer: tap];
    
    [UIView animateWithDuration:0.3 animations:^{
        imageView.frame=CGRectMake(0,([UIScreen mainScreen].bounds.size.height-image.size.height*[UIScreen mainScreen].bounds.size.width/image.size.width)/2, [UIScreen mainScreen].bounds.size.width, image.size.height*[UIScreen mainScreen].bounds.size.width/image.size.width);
        backgroundView.alpha = 1;
    } completion:^(BOOL finished) {
        
    }];
    
   
}

+(void)hideImage:(UITapGestureRecognizer*)tap
{
    UIView *backgroundView = tap.view;
    UIImageView *imageView = (UIImageView*)[tap.view viewWithTag:1];
    [UIView animateWithDuration:0.3 animations:^{
        imageView.frame = oldframe;
        backgroundView.alpha = 0;
    } completion:^(BOOL finished) {
        [backgroundView removeFromSuperview];
    }];
    
    
}
@end


在视图控制器中

//
//  ViewController.m
//  TapImageBigAndSmall
//
//  Created by lxy on 15-4-7.
//  Copyright (c) 2015年 Shenzhen MSD Technology Co.,LTD. All rights reserved.
//

#import "ViewController.h"
#import "BigImage.h"

@interface ViewController ()
@property (nonatomic,strong)UIImageView *image;
@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    self.view.backgroundColor = [UIColor magentaColor];
    self.image = [[UIImageView alloc]initWithFrame:CGRectMake(100, 100, 100, 100)];
    _image.image = [UIImage imageNamed:@"me"];
    _image.userInteractionEnabled = YES;
    [self.view addSubview:_image];
    
    /**
     * 给图片添加手势  点击可放大图片 
     */
    UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tapClick)];
    [self.image addGestureRecognizer:tap];
    
    /**
     * 一张图片围绕着一个圆转圈
     */
//     [self AnimationStart];
    
    
    
    

}
- (void)tapClick
{
    [BigImage showImage:_image];

}
- (void)AnimationStart
{
    UIImage *image=[UIImage imageNamed:@"me"];
    CALayer *flyStarLayer=[CALayer layer];
    flyStarLayer.bounds=CGRectMake(0, 0, 20, 20);
    flyStarLayer.contents=(id)image.CGImage;
    [self.view.layer addSublayer:flyStarLayer];
    
    CAKeyframeAnimation *keyAnimation=[CAKeyframeAnimation animationWithKeyPath:@"position"];
    keyAnimation.duration=5.0;
    keyAnimation.removedOnCompletion=NO;
    //    NSNumber *number1=[NSNumber numberWithFloat:0.0];
    //    NSNumber *number2=[NSNumber numberWithFloat:0.2];
    //    NSNumber *number3=[NSNumber numberWithFloat:0.8];
    //    keyAnimation.keyTimes=[NSArray arrayWithObjects:number1,number2,number3, nil];
    keyAnimation.fillMode=kCAFillModeForwards;
    keyAnimation.repeatCount=1;
    
    CGMutablePathRef circlePath=CGPathCreateMutable();
    
    CGPathAddArc(circlePath, nil, 100, 150, 50, 0, 4*M_PI, 0);
    keyAnimation.path=circlePath;
    CGPathRelease(circlePath);
    [flyStarLayer addAnimation:keyAnimation forKey:nil];

}



  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值