如何在 UIScrollView 中捏缩放多个 UIImageView

Posted

技术标签:

【中文标题】如何在 UIScrollView 中捏缩放多个 UIImageView【英文标题】:How to pinch zoom multiple UIImageViews inside UIScrollView 【发布时间】:2013-12-04 11:54:31 【问题描述】:

我必须捏缩放多个图像。我已将每个 UIImageView 添加到 UIView 并将 UIView 添加到 UIScrollView。并返回 UIView 图像 viewForZoomingInScrollView: 委托方法,但图像未按预期缩放。有没有更好的方法?

【问题讨论】:

参考这个developer.apple.com/library/ios/samplecode/Touches/Touches.zip @keshav 同样的问题在这里检查链接这里是我的代码pastebin.com/4idGrBXR @keshav 在此处粘贴一些代码 :) 我接受了上述参考,它对我有很大帮助,现在它工作得更好......谢谢。 @keshav plz post yr code 它是如何工作的:) 【参考方案1】:
#define VIEW_FOR_ZOOM_TAG (1)

@implementation [SVViewController][1]

- (void)viewDidLoad 
    [super viewDidLoad];

    UIScrollView *mainScrollView = [[UIScrollView alloc] initWithFrame:self.view.bounds];
    mainScrollView.pagingEnabled = YES;
    mainScrollView.showsHorizontalScrollIndicator = NO;
    mainScrollView.showsVerticalScrollIndicator = NO;

    CGRect innerScrollFrame = mainScrollView.bounds;

    for (NSInteger i = 0; i < 3; i++) 
        UIImageView *imageForZooming = [[UIImageView alloc] initWithImage:[UIImage imageNamed:  
        [NSString stringWithFormat:@"page%d", i + 1]]];
        imageForZooming.tag = VIEW_FOR_ZOOM_TAG;

        UIScrollView *pageScrollView = [[UIScrollView alloc] initWithFrame:innerScrollFrame];
        pageScrollView.minimumZoomScale = 1.0f;
        pageScrollView.maximumZoomScale = 2.0f;
        pageScrollView.zoomScale = 1.0f;
        pageScrollView.contentSize = imageForZooming.bounds.size;
        pageScrollView.delegate = self;
        pageScrollView.showsHorizontalScrollIndicator = NO;
        pageScrollView.showsVerticalScrollIndicator = NO;
        [pageScrollView addSubview:imageForZooming];

        [mainScrollView addSubview:pageScrollView];

        if (i < 2) 
            innerScrollFrame.origin.x += innerScrollFrame.size.width;
        
    

    mainScrollView.contentSize = CGSizeMake(innerScrollFrame.origin.x + 
    innerScrollFrame.size.width, mainScrollView.bounds.size.height);

    [self.view addSubview:mainScrollView];


- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView 
    return [scrollView viewWithTag:VIEW_FOR_ZOOM_TAG];


- (NSUInteger)supportedInterfaceOrientations 
    return UIInterfaceOrientationMaskPortrait;
 

- (BOOL)shouldAutorotate 
    return NO;


@end


  [1]: http://www.lyricspoints.com

【讨论】:

一些信息会更好,而不是只发布一堆代码。【参考方案2】: 检查滚动视图的最小和最大缩放比例属性。 (max 应该大于 min 才能进行缩放) 确保您返回的是相应的 UIImageView 而不是 UIView 确保您已将滚动视图委托设置为您希望将滚动视图的委托消息发送到的对象,例如viewForZoomingInScrollView:

【讨论】:

我认为您没有将scrollView.delegate 设置为self。所以viewForZoomingInScrollView方法不会被调用。

以上是关于如何在 UIScrollView 中捏缩放多个 UIImageView的主要内容,如果未能解决你的问题,请参考以下文章

在objective-c中捏缩放后如何删除顶部和底部空间?

在滚动视图中捏放大

如何在uiscrollview中双击缩放和两个手指缩放uiimage

在 UIScrollView 中同时缩放多个对象

如何选择正确的视图来缩放视图中的多个 UIScrollView 对象(iPhoneSDK obj-C)?

具有多个缩放级别的 UIScrollView?