【问题标题】:How to Zoom Out and Zoom in on the perticular View in scroll view images如何在滚动视图图像中缩小和放大特定视图
【发布时间】:2015-06-28 13:20:25
【问题描述】:

我正在使用此代码进行缩放,这是完美的,但我希望在此缩放后缩小。

CGFloat s = 3;
CGPoint p = CGPointMake(150, 300);
CGAffineTransform tr = CGAffineTransformScale(self.view.transform, s, s);
CGFloat h = self.view.frame.size.height;
CGFloat w = self.view.frame.size.width;
[UIView animateWithDuration:2.5 delay:0 options:0 animations:^{
    self.view.transform = tr;
    CGFloat cx = w/2-s*(p.x-w/2);
    CGFloat cy = h/2-s*(p.y-h/2);
    self.view.center = CGPointMake(cx, cy); //was: (w*s/2,h-h*s/2);
} completion:^(BOOL finished) {}];

【问题讨论】:

    标签: ios uiscrollview zooming


    【解决方案1】:

    尝试使用 hitTest 和滚动视图委托方法,即 viewForZoomingInScrollView,如下所示。

    - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
        return yourScrollView;
    }
    
    - (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
        return yourImageView;
    }
    

    您可以在另一个滚动视图中设置所选图像并处理缩放。

    - (void)setImage:(UIImage *)image {
        [self.imageView setImage:image];
        [self.imageView sizeToFit];
    
        //add this image view as subview of scroll view here and set content size accordingly.    
    
        CGFloat zoomScale = 1.0;
    
        if (self.imageView.frame.size.width < self.imageView.frame.size.height) {
            zoomScale = (self.scrollView.frame.size.width / self.imageView.frame.size.width);
        } else {
            zoomScale = (self.scrollView.frame.size.height / self.imageView.frame.size.height);
        }
    
        [self.scrollView setContentSize:self.imageView.frame.size];
        [self.scrollView setMinimumZoomScale:zoomScale];
        [self.scrollView setMaximumZoomScale:1.0];
        [self.scrollView setZoomScale:zoomScale];
        [self.scrollView setContentOffset:CGPointMake((self.imageView.frame.size.width - self.scrollView.frame.size.width) / 2,
                                                  (self.imageView.frame.size.height - self.scrollView.frame.size.height) / 2)];
    }
    

    【讨论】:

    • 非常感谢您的回答。我确实尝试过,但这个方法从未调用过 - (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
    • 我在滚动视图中使用滚动视图是 128 张图片,我想点击任何特定图片,然后放大全视图,然后再次点击图片上的标签以缩小。
    • 查看此链接。它可能对你有用。 stackoverflow.com/questions/10489906/…
    • 您可以在选中时将图像设置在另一个滚动视图中,然后您可以轻松处理缩放操作。我更新了我的答案。一旦检查它。
    • 我确实试过这个代码放大很好,但只有第一张图片不是多张图片
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多