我有一个UIScrollView
A ,子视图 B ,(它本身是contentView D 的子视图A
- 所以 B 是不具有子视图的scrollview A
的contentView),我们称之为 C 。
+------------------------+
| A |
| |
| +-------------------+ |
| |D (=contentView) | |
| | +-----------+ | |
| | | B | | |
| | | +--+ | | |
| | | |C | | | |
| | | +--+ | | |
| | +-----------+ | |
| +-------------------+ |
+------------------------+
我希望scrollView能够完全缩放,以便C填充我的iPhone屏幕,或者至少向我显示尽可能大的屏幕。
我无法理解缩放前滚动视图的zoomScale
是什么(让我们假设当滚动视图已经放大并且缩放比例为2.45时我会放大)。
所以第一个问题是,zoomScale是否会影响UIScrollView放大的矩形?
我的第二个问题是CGPoint转换。 iOS有一些内置函数可以在视图之间转换CGPoints / CGRects,但是我根本无法从给定的引用中产生任何效率。
这是我打算做的事情:
1)将 C 的原点转换为 A 的坐标系:
CGPoint originConvertedToAsCoordinateSystem = [self convertPoint:C.frame.origin toView:A];
2)使用 C 的给定来源缩放到矩形:
//shortened for the purpose of readability
CGPoint p = originConvertedToAsCoordinateSystem;
CGRect zoomRect = CGRectMake(p.x,p.y,C.frame.size.width,C.frame.size.height);
[A zoomToRect:zoomRect animated:YES];
在我给出的例子中,我忽略了 A 的zoomScale
的值,因为我不知道是否乘以或除以该值。
答案 0 :(得分:1)
问题更新后更新:
如果要以编程方式缩放和滚动滚动视图,以便子视图C填充整个滚动视图矩形(滚动视图边界),则需要在视图控制器中执行以下操作:
CGRect rectToZoom = [self.D convertRect:self.C.frame fromView:self.B];
[self.scrollView zoomToRect:rectToZoom animated:YES];
这假设您将视图D作为要缩放的视图返回:
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
return self.D;
}
滚动视图的maximumZoomScale,contentSize和contentInset属性必须足够大,以允许滚动和缩放(检查:尝试手动执行您想要的操作并查看是否可行)。