首页 > 代码库 > ScrollView双击图片定点放大
ScrollView双击图片定点放大
直接先说原理吧--原理:利用了scrollview的回调函数(如下)以及scrollview自己内部的一些缩放规则(其实我也还没弄清楚具体scrollview干了什么事),只是知道了它可以怎么做-_-#
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView{ returnself.zoomImageView;}
其实今天的缩放部分我还加上了常见的 双击图片的缩小与放大,先上代码:
- (id)initWithFrame:(CGRect)frame{ self = [super initWithFrame:frame]; if (self) { //自身属性的一些设置 NSLog(@"%@",NSStringFromCGRect(frame)); self.delegate =self; self.showsVerticalScrollIndicator =NO; self.showsHorizontalScrollIndicator =NO; self.maximumZoomScale =3; //承载当前图片的imageview self.zoomImageView = [[[UIImageViewalloc] init] autorelease]; self.zoomImageView.userInteractionEnabled =YES; self.zoomImageView.frame =CGRectMake(0.0f, 0.0f, frame.size.width , frame.size.height); self.zoomImageView.image = [UIImageimageNamed:@"lichengwu.jpeg"]; [self addSubview:self.zoomImageView]; // Add gesture,double tap zoom imageView. UITapGestureRecognizer *doubleTapGesture = [[UITapGestureRecognizeralloc] initWithTarget:self action:@selector(handleDoubleTap:)]; [doubleTapGesture setNumberOfTapsRequired:2]; [ self.zoomImageViewaddGestureRecognizer:doubleTapGesture]; [doubleTapGesture release]; // initialize tapclicks tapClicks = NO; } return self;}
#pragma mark - Zoom methods- (void)handleDoubleTap:(UIGestureRecognizer *)gesture{ float newScale; if (!tapClicks) { newScale = self.zoomScale *2.0; } else{ newScale = self.zoomScale *0.0; } CGRect zoomRect = [selfzoomRectForScale:newScale withCenter:[gesturelocationInView:gesture.view]]; [self zoomToRect:zoomRectanimated:YES]; tapClicks = !tapClicks;}
这一部分也是相当的一目了然,就是处理双击事件函数,是缩小还是放大,正正的处理图片的函数如下:
#pragma mark - CommonMethods- (CGRect)zoomRectForScale:(float)scale withCenter:(CGPoint)center{ CGRect zoomRect; zoomRect.size.height =self.frame.size.height / scale; zoomRect.size.width =self.frame.size.width / scale; zoomRect.origin.x = center.x - (zoomRect.size.width /2.0); zoomRect.origin.y = center.y - (zoomRect.size.height /2.0); return zoomRect;}
看见原理了没,其实就是获得当前点击处的中心X与原来图片尺寸的差值,然后传递给Scrollview进行缩放,至于scrollview具体干了什么事情,这就要让喜欢刨根问底的童鞋用一些力气了,然后@给我哦。
ScrollView双击图片定点放大
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。