zoukankan      html  css  js  c++  java
  • iOS-UIScrollView-图片缩放

    一. 实现功能

     两个手指捏合,可以放大或者缩小图片.

    二.原理说明

    1. 实现缩放功能的四个步骤

        (1) 让控制器遵守代理协议

        (2) 让scrollView设置代理 self

        (3) 调用代理方法, 返回需要实现缩放的子控件

        (4) 设置缩放比例

     2.补充: 跟缩放相关的代理方法

     (1)  - (void)scrollViewWillBeginZooming:(UIScrollView *)scrollView withView:(UIView *)view

     (2)  - (void)scrollViewDidZoom:(UIScrollView *)scrollView

    三. 代码部分 (可以直接复制使用)

    #import "ThirdViewController.h"
    #import "Masonry.h"
    
    @interface ThirdViewController () <UIScrollViewDelegate>
    
    @property (nonatomic, strong) UIScrollView  * scrollView;
    
    @property (nonatomic, strong) UIImage       * image;
    
    @property (nonatomic, strong) UIImageView   * imageView;
    
    
    @end
    
    @implementation ThirdViewController
    
    #pragma mark - 生命周期
    #pragma mark viewDidLoad
    - (void)viewDidLoad
    {
        [super viewDidLoad];
        
        [self basicSetting];
        
        [self addscrollView];
        
        [self addImageView];
    }
    
    #pragma mark - 系统代理
    
    #pragma mark 返回需要缩放的子控件
    -  (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
    {
        return self.imageView;
    }
    
    #pragma mark - 实现方法
    #pragma mark 基本设置
    - (void)basicSetting
    {
        self.title = @"UIScrollView-图片放大";
    }
    
    - (void)addscrollView
    {
        [self.view addSubview:self.scrollView];
        [self.scrollView mas_makeConstraints:^(MASConstraintMaker *make) {
            
            make.edges.mas_equalTo(self.view).with.insets(UIEdgeInsetsMake(0, 0, 0, 0));
        }];
    }
    
    - (void)addImageView
    {
        [self.scrollView addSubview:self.imageView];
        [self.imageView mas_makeConstraints:^(MASConstraintMaker *make) {
            
            make.left.mas_equalTo(self.scrollView);
            make.width.mas_equalTo(self.view.bounds.size.width);
            make.top.mas_equalTo(self.scrollView);
            make.height.mas_equalTo([UIScreen mainScreen].bounds.size.height);
        }];
    }
    
    #pragma mark - setter & getter
    
    - (UIScrollView *)scrollView
    {
        if (!_scrollView)
        {
            self.scrollView = [[UIScrollView alloc] init];
            self.scrollView.backgroundColor = [UIColor orangeColor];
            
            // 设置最大拉伸比例
            self.scrollView.maximumZoomScale = 2.0f;
            
            // 设置最小缩放比例
            self.scrollView.minimumZoomScale = 0.5f;
            
            // 设置scrollview 的滚动范围和图片真实尺寸一致
            self.scrollView.contentSize = self.image.size;
            
            self.scrollView.delegate = self;
        }
        return _scrollView;
    }
    
    - (UIImage *)image
    {
        if (!_image)
        {
            self.image = [UIImage imageNamed:@"红妹子"];
        }
        return _image;
    }
    
    - (UIImageView *)imageView
    {
        if (!_imageView)
        {
            self.imageView = [[UIImageView alloc] init];
            self.imageView.image = self.image;
        }
        return _imageView;
    }
    
    @end
    你的一次推荐就是对我莫大的支持。感觉不错,给个推荐或者评论吧。
  • 相关阅读:
    android ListView几个比较特别的属性
    一.反编译Apk得到Java源代码
    android 正确获取屏幕像素大小
    android 动态添加控件
    动态加控件
    android ListView的美化涉及到的一些属性
    ASP.NET中的状态管理(转载)
    ASP.NET 2.0使用user profile储存信息前,如何部署aspnetdb.mdf和连接
    ASP.NET中防止Access数据库下载
    个性化用户配置概述、Profile配置节详细介绍
  • 原文地址:https://www.cnblogs.com/mancong/p/5547291.html
Copyright © 2011-2022 走看看