• scrollview 图片放大 捏合 瓦片地图 相关注意事项


    就职文博公司要为博物馆做APP 涉及到瓦片地图的编写 在这里总结一些开发中遇到的问题 (将会不断更新 也是学习阶段)

    着急写项目的同学 可以直接看code4上现成的瓦片地图代码:http://www.code4app.com/ios/Tiled-Scroll-View/4fba3fd66803fa8413000000

    1. 首先实现利用scrollview实现图片的缩放: 需要设置

    maximumZoomScale;     // default is 1.0. must be > minimum zoom scale to enable zooming  *****只有设置了这个属性值大于1.0 才能实现缩放效果

    下面上代码

    //.h 文件
    #import <UIKit/UIKit.h>
    
    @interface HDMapView : UIScrollView <UIScrollViewDelegate>
    
    -(instancetype)initWithFrame:(CGRect)frame andContentSize:(CGSize)contentSize;
    
    -(void)setMapImage:(UIImage*)image;
    
    @end
    
    //.m 文件
    #import "HDMapView.h"
    
    @interface HDMapView ()
    
    @property(strong,nonatomic)UIImageView *myImageView;
    @end
    
    @implementation HDMapView
    
    -(instancetype)initWithFrame:(CGRect)frame andContentSize:(CGSize)contentSize
    {
        self = [super initWithFrame:frame];
        if (self) {
            
            self.maximumZoomScale=17;
            
            self.frame = frame;
            self.delegate = self;
            self.contentSize = contentSize;
                    
            self.myImageView = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, contentSize.width, contentSize.height)];
            self.myImageView.userInteractionEnabled = YES;
            [self addSubview:self.myImageView];
            
            
            UITapGestureRecognizer *twiceTap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tapTwice)];
            twiceTap.numberOfTapsRequired = 2;
            twiceTap.numberOfTouchesRequired = 1;
            [self.myImageView addGestureRecognizer:twiceTap];
        }
        
        return self;
    }
    
    -(void)tapTwice
    {
        if (self.zoomScale > 3) {
            [self setZoomScale:1.0 animated:YES];
        }
        else
        {
            CGFloat a = self.zoomScale;
            a++;
            [self setZoomScale:a animated:YES];;
        }
    }
    
    -(void)setMapImage:(UIImage*)image
    {
        self.myImageView.image = image;
    }
    
    #pragma mark - UIScrollViewDelegate
    -(UIView*)viewForZoomingInScrollView:(UIScrollView *)scrollView
    {
        return self.myImageView;
    }
    
    -(void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale
    {
        [self setZoomScale:scale animated:YES];
    }
  • 相关阅读:
    详解TCP三次握手
    Linux(Ubunt)使用日记------常用软件汇总(不定时更新)
    Linux(Ubuntu)使用日记------markdown文件与pdf,doc,docx文件的相互转化(pandoc使用)
    白板编程浅谈——Why, What, How
    深入理解Java 8 Lambda(语言篇——lambda,方法引用,目标类型和默认方法)
    我的算法学习之路
    redux的hook使用
    redux基础(添加中间件与异步)
    typescript书写规范
    用js手撕七种排序算法!!内附运行速度测试函数
  • 原文地址:https://www.cnblogs.com/ceasar/p/5241289.html
Copyright © 2020-2023  润新知