为什么我无法放大UIScrollView中的UIImageView?

时间:2013-12-07 20:38:08

标签: ios objective-c uiscrollview uiimageview

我希望在UIImageView内部展示一个UIScrollView,可以放大,然后平移和一切。所有这些都是在不使用IB的情况下在代码中完成的。

我正在尝试按如下方式添加图片和滚动视图:

    self.imageBeingOverlayed = [[UIImageView alloc] initWithImage:responseObject];
    self.imageBeingOverlayed.contentMode = UIViewContentModeScaleAspectFit;

    self.imageBeingOverlayedScrollView = [[UIScrollView alloc] initWithFrame:[UIScreen mainScreen].bounds];
    self.imageBeingOverlayedScrollView.contentSize = ((UIImage *)responseObject).size;
    self.imageBeingOverlayedScrollView.maximumZoomScale = 5.0;
    self.imageBeingOverlayedScrollView.minimumZoomScale = 0.5;

    [self.imageBeingOverlayedScrollView addSubview:self.imageBeingOverlayed];
    [darkOverlayView addSubview:self.imageBeingOverlayedScrollView];

在创建图像视图的地方,我将其添加到我创建的滚动视图中(这两个对象都可以在整个文件中访问)。使用我创建的scrollview,我只希望它与图像一样大,但我很困惑如何创建框架。也许就是这样。

但无论如何,我设置了最大和最小缩放比例,我将滚动视图的委托设置为self中的viewDidLoad,我也实现了此方法:

- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
    return self.imageBeingOverlayed;
}

但是当我运行应用程序并使用相当大的图像时,图像可以被平移,但根本不会放大。是什么给了什么?

1 个答案:

答案 0 :(得分:0)

根据说明,在设置minimumZoomScalemaximumZoomScale之前尚未设置scrollView的委托。在这种情况下,对viewForZoomingInScrollView的调用不起作用,因为代理仍为nil。要解决此问题,请在代码中设置委托后尝试设置contentSizeminimumZoomScalemaximumZoomScale

self.imageBeingOverlayedScrollView.delegate = self;
self.imageBeingOverlayedScrollView.contentSize = self.imageBeingOverlayed.image.size;
self.imageBeingOverlayedScrollView.maximumZoomScale = 5.0;
self.imageBeingOverlayedScrollView.minimumZoomScale = 0.5;