UIScrollviews zoomToRect仅设置zoomScale而不设置contentOffset

时间:2012-09-11 09:21:03

标签: ios uiscrollview

我的UIScrollView在使用contentOffset时没有设置zoomToRect

我的UIScrollView里面有UIImageView。目前,滚动和缩放本身正在发挥作用。现在我想在应用程序的滚动视图中启动图像视图的某个缩放的矩形。为此我实施了zoomToRect:,它正确设置了zoomsScale,但没有设置contentOffset

使用zoomToRect时的预期结果是UIScrollView根据所选矩形放大或缩小,并根据给予{{的矩形的原点坐标设置其contentOffset 1}}方法 实际行为是它缩放到正确的zoomToRect,但我的zoomScale始终位于原点0,0而不是x(475)和y(520)的预期原点。我在UIImageView中指定了。
我的图片尺寸是1473x1473。

以下是一些代码

zoomToRect

我的问题:

  • 为什么- (void)viewDidLoad { CGRect bounds = self.view.frame; _imageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"bgImage.png"]]; self.containerView = [[UIView alloc] initWithFrame:bounds]; _containerView.contentMode = UIViewContentModeCenter; _scrollView = [[UIScrollView alloc] initWithFrame:bounds]; _scrollView.delegate = self; _scrollView.contentSize = _imageView.bounds.size; _scrollView.minimumZoomScale = 0.2; [_scrollView addSubview:_containerView]; [_containerView addSubview:_imageView]; [self.view addSubview:_scrollView]; } - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; [_scrollView zoomToRect:CGRectMake(475.0, 150.0, 520.0, 747.0) animated:NO]; } #pragma mark UIScrollViewDelegate methods - (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView { return _containerView; } - (void)scrollViewDidZoom:(UIScrollView *)scrollView { [self printVisibleRectToConsole:scrollView]; CGSize newImageViewSizeWithScale = CGSizeMake(_imageView.bounds.size.width * _scrollView.zoomScale, _imageView.bounds.size.height * _scrollView.zoomScale); _scrollView.contentSize = newImageViewSizeWithScale; } 没有设置zoomToRect
  • 如何让contentOffset按预期更改我的zoomToRect

1 个答案:

答案 0 :(得分:1)

问题是您缩放的视图(containerView)没有它包含的图像视图那么大(以及您实际想要缩放的视图)。其frame设置为视图控制器的frame。您没有看到这一点,因为UIView默认情况下不会剪切其子视图。

您应该使用图片视图的边界初始化containerView

self.containerView = [[UIView alloc] initWithFrame:_imageView.bounds];