zoukankan      html  css  js  c++  java
  • IOS 图片全屏预览

      如果你感觉累,那就对了那是因为你在走上坡路。。这句话似乎有点道理的样子,时常提醒自己无论走到哪都不要忘记自己当初为什么出发。有时想想感觉有的东西可以记录一下,就把它记录下来吧,这次想写一下关于单张图片点击全屏预览的问题,网上查了一些大神写的有的功能确实很强大但自己暂时想要的只是简单的功能就好,还有些方法自己也没弄出想要的效果,最后写了一个比较简单的点击单张图片的全屏预览和双指捏合缩小放大,可能有时要对图片做一些处理,这里放大后只是显示同一张图片并未做处理,下面直接贴出代码

     1 //
     2 //  ViewController.m
     3 //  XWZoomImageView
     4 //
     5 //  Created by xiao on 15/11/11.
     6 //  Copyright © 2015年 xiao. All rights reserved.
     7 //
     8 
     9 #import "ViewController.h"
    10 
    11 @interface ViewController ()<UIScrollViewDelegate>
    12 @property (weak, nonatomic) IBOutlet UIImageView *picView;
    13 @property (weak, nonatomic) UIScrollView *scrollView;
    14 @property (weak, nonatomic) UIImageView *lastImageView;
    15 @property (nonatomic, assign)CGRect originalFrame;
    16 @end
    17 
    18 @implementation ViewController
    19 
    20 - (void)viewDidLoad {
    21     [super viewDidLoad];
    22     
    23     self.picView.userInteractionEnabled = YES;
    24     //添加单击手势
    25     UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(showZoomImageView:)];
    26 
    27     [self.picView addGestureRecognizer:tap];
    28     
    29 }
    30 
    31 -(void)showZoomImageView:(UITapGestureRecognizer *)tap
    32 {
    33     if (![(UIImageView *)tap.view image]) {
    34         return;
    35     }
    36     //scrollView作为背景
    37     UIScrollView *bgView = [[UIScrollView alloc] init];
    38     bgView.frame = [UIScreen mainScreen].bounds;
    39     bgView.backgroundColor = [UIColor blackColor];
    40     UITapGestureRecognizer *tapBg = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapBgView:)];
    41     [bgView addGestureRecognizer:tapBg];
    42     
    43     UIImageView *picView = (UIImageView *)tap.view;
    44     
    45     UIImageView *imageView = [[UIImageView alloc] init];
    46     imageView.image = picView.image;
    47     imageView.frame = [bgView convertRect:picView.frame fromView:self.view];
    48     [bgView addSubview:imageView];
    49     
    50     [[[UIApplication sharedApplication] keyWindow] addSubview:bgView];
    51     
    52     self.lastImageView = imageView;
    53     self.originalFrame = imageView.frame;
    54     self.scrollView = bgView;
    55     //最大放大比例
    56     self.scrollView.maximumZoomScale = 1.5;
    57     self.scrollView.delegate = self;
    58     
    59     [UIView animateWithDuration:0.5 animations:^{
    60         CGRect frame = imageView.frame;
    61         frame.size.width = bgView.frame.size.width;
    62         frame.size.height = frame.size.width * (imageView.image.size.height / imageView.image.size.width);
    63         frame.origin.x = 0;
    64         frame.origin.y = (bgView.frame.size.height - frame.size.height) * 0.5;
    65         imageView.frame = frame;
    66     }];
    67 }
    68 
    69 -(void)tapBgView:(UITapGestureRecognizer *)tapBgRecognizer
    70 {
    71     self.scrollView.contentOffset = CGPointZero;
    72     [UIView animateWithDuration:0.5 animations:^{
    73         self.lastImageView.frame = self.originalFrame;
    74         tapBgRecognizer.view.backgroundColor = [UIColor clearColor];
    75     } completion:^(BOOL finished) {
    76         [tapBgRecognizer.view removeFromSuperview];
    77         self.scrollView = nil;
    78         self.lastImageView = nil;
    79     }];
    80 }
    81 
    82 //返回可缩放的视图
    83 -(UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
    84 {
    85     return self.lastImageView;
    86 }

    最后同样带上一张图片吧,大致是这样子

    不忘初心,方得始终
  • 相关阅读:
    租房
    NetBeans 时事通讯(刊号 # 103 May 18, 2010)
    美国的车库文化
    新《三国》的两点观后感
    欧洲足球逐渐失去冷门的魅力
    NetBeans 时事通讯(刊号 # 102 May 14, 2010)
    NetBeans 时事通讯(刊号 # 103 May 18, 2010)
    HTML 简史
    租房
    HTML 简史
  • 原文地址:https://www.cnblogs.com/Lingchen-start/p/4962852.html
Copyright © 2011-2022 走看看