我希望在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;
}
但是当我运行应用程序并使用相当大的图像时,图像可以被平移,但根本不会放大。是什么给了什么?
答案 0 :(得分:0)
根据说明,在设置minimumZoomScale
和maximumZoomScale
之前尚未设置scrollView的委托。在这种情况下,对viewForZoomingInScrollView
的调用不起作用,因为代理仍为nil
。要解决此问题,请在代码中设置委托后尝试设置contentSize
,minimumZoomScale
和maximumZoomScale
:
self.imageBeingOverlayedScrollView.delegate = self;
self.imageBeingOverlayedScrollView.contentSize = self.imageBeingOverlayed.image.size;
self.imageBeingOverlayedScrollView.maximumZoomScale = 5.0;
self.imageBeingOverlayedScrollView.minimumZoomScale = 0.5;