我的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
?答案 0 :(得分:1)
问题是您缩放的视图(containerView
)没有它包含的图像视图那么大(以及您实际想要缩放的视图)。其frame
设置为视图控制器的frame
。您没有看到这一点,因为UIView
默认情况下不会剪切其子视图。
您应该使用图片视图的边界初始化containerView
。
self.containerView = [[UIView alloc] initWithFrame:_imageView.bounds];