带有图像的 UIScrollView - 如何不缩放其中一个

Posted

技术标签:

【中文标题】带有图像的 UIScrollView - 如何不缩放其中一个【英文标题】:UIScrollView with images - how not to zoom one of them 【发布时间】:2013-08-30 11:58:48 【问题描述】:

我在scrollView 中有很多imageViews。问题是我希望其中一个不要放大其图像。我无法将imageView 移动到scrollView 之外,因为它必须根据@ 中的缩放和平移手势更改位置(帧) 987654325@。有没有机会不放大这个imageView的图片?

【问题讨论】:

动态且一致地将其缩放更新为1/zoomGestureZoom? @JamesWebster 你到底是什么意思..?我无法更改 imageView 的缩放,只能更改 scrollView 的缩放。我不想更改 scrollView 的缩放,因为还有其他应该缩放的 imageView。 啊,忽略这个。我不怎么使用 UIKit,我没有意识到缩放 UIImageView 不是一件容易的事。 您在滚动视图中添加的图像视图的大小是多少? imageViews 的大小是比 scrollView 的视图小还是等于它的大小? @CodenameLambda1 imageViews 有不同的尺寸和变换。有些相等,有些更大,有些更小。我不想放大其内容图像的那个在宽度或高度上与 scrollView 相等,并且在相反方向上更小。这个也没有任何转换。 【参考方案1】:

由于您的 imageViews 在滚动视图的大小方面具有不同的大小,因此您可以通过以下方式实现这一点

    从 UIScrollView 派生一个类并在其中添加 UIImageView。如下:

    @interface MyScrollView : UIScrollView <UIScrollViewDelegate>
    @property(nonatomic,retain)UIImageView *imageView;
    @end
    
    @implementation
    
    -(id)initWithFrame:(CGRect)frame
    
        self = [super initWithFrame:frame];
        
    
            self.delegate = self;
            self.minimumZoomScale = 1.0f;
            self.maximumZoomScale = 3.0f;
            self.bounces= NO;
    
            self.imageView = [[UIImageView alloc] initWithFrame:self.bounds];
            [self addSubview:self.imageView];
        
    
        return self;
    
    
    -(UIView*)viewForZoomingInScrollView:(UIScrollView*)scrollView
    
        return self.imageView;
    
    
    @end
    

    现在您可以将上述 MyScrollView 的实例添加到实际的 scrollView 中。 这就像一个滚动视图中的滚动视图。

    使您的滚动视图不可缩放。

    通过以下方式在每个滚动视图中添加您的图像:

    [myScrollViewInstance.imageView setImage:myImage];

这样在进行捏合手势时,只有你捏合下的imageView会放大或缩小。

【讨论】:

以上是关于带有图像的 UIScrollView - 如何不缩放其中一个的主要内容,如果未能解决你的问题,请参考以下文章

带有动态文本和图像的 UIScrollView

带有图像的 UIScrollView

如何在 Swift 的 UIScrollView 中的视图之间添加填充? [关闭]

带有背景图像的 UIScrollView

带有图像的 UIScrollView

如何在 swift 中设置 UIScrollView 内的全宽图像