将 ScrollView 放大到特定坐标 (IPAD)

Posted

技术标签:

【中文标题】将 ScrollView 放大到特定坐标 (IPAD)【英文标题】:Zooming in a UIScrollView to a especific cordinate (IPAD) 【发布时间】:2014-02-14 00:57:58 【问题描述】:

我有一个UIScrollView,它显示一个 pdf 页面。我已经实现了单击手势来隐藏/显示屏幕上的工具栏和双击放大和缩小......问题是放大总是在页面的中心,我希望它放大到哪里用户最后一次点击。我已经保存了最后一次触摸的CGPoint,但我不知道如何在放大时使用它...这是我的一些代码,感谢您的帮助,谢谢。

代码已更新(工作)

@implementation PDFScrollView //custom UIScrollView

    CGPoint lastTouch;
    CGFloat ZOOM_MIN;
    CGFloat ZOOM_MAX;
    UIView* PDFView;


-(void) gestureDoubleTap
    if ([self zoomScale]==ZOOM_MAX) 
        [self setZoomScale:ZOOM_MIN animated:YES];
    else 
        [self zoomToRect:CGRectMake(lastTouch.x, lastTouch.y, 0, 0) animated:YES]
    


- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
    lastTouch = [(UITouch*)[touches anyObject] locationInView:self.PDFView];


- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView

    return self.PDFView;


- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(CGFloat)scale

    if ([self zoomScale]<ZOOM_MIN) 
        [self setZoomScale:ZOOM_MIN animated:YES];
    else if ([self zoomScale]>ZOOM_MAX)
        [self setZoomScale:ZOOM_MAX animated:YES];
    

【问题讨论】:

【参考方案1】:

使用UIScrollViewzoomToRect:animated方法

【讨论】:

哇,这么简单!?,应该已经阅读了文档,谢谢兄弟 我有点奇怪的结果。为什么它使用 rect 而没有 cgpoint?我试过:[self zoomToRect:CGRectMake(lastTouch.x, lastTouch.y, 0, 0) animated:YES];和 [self zoomToRect:CGRectMake(lastTouch.x, lastTouch.y, 100, 100) 动画:YES];缩放是不可预测的 已修复...我更改为 touchesBegan 并在 locationInView:self 而不是 self 中访问子视图,其中是页面...完美运行。

以上是关于将 ScrollView 放大到特定坐标 (IPAD)的主要内容,如果未能解决你的问题,请参考以下文章

如何在特定位置将视图添加到 ScrollView?

将具有特定纵横比的图像添加到 ScrollView

iOS Swift 仿微信朋友圈实现图片点击放大查看

ScrollView不会快速滚动

Scrollview 只缩放到左上角

如何在特定坐标中启动Activity