scrollview 圖片放大 捏合 瓦片地圖 相關注意事項,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];}