gpt4 book ai didi

ios - UIScrollView-zoomToRect :animated: and CGPoint conversion between views

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:38:27 28 4
gpt4 key购买 nike

我有一个 UIScrollView A 和一个 subview B,(它本身是 contentView D A 的 strong> - 所以 B 不是 ScrollView A 的 contentView),它有一个 subview ,我们称它为 C

+------------------------+
| A |
| |
| +-------------------+ |
| |D (=contentView) | |
| | +-----------+ | |
| | | B | | |
| | | +--+ | | |
| | | |C | | | |
| | | +--+ | | |
| | +-----------+ | |
| +-------------------+ |
+------------------------+

我希望 scrollView 能够精确缩放,以便 C 填满我的 iPhone 屏幕,或者至少向我显示尽可能大的屏幕。在缩放之前,我无法理解 ScrollView 的 zoomScale 是怎样的(假设我在 ScrollView 已经放大并且 zoomScale 为 2.45 时放大)。那么第一个问题是,zoomScale 会影响 UIScrollView 放大到的矩形吗?

我的第二个问题是关于 CGPoint 转换。 iOS 有一些内置函数可以在 View 之间转换 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];

在我给出的示例中,我忽略了 AzoomScale 的值,因为我真的不知道是乘以还是除以该值。

最佳答案

问题更新后更新:

如果您想以编程方式缩放和滚动 ScrollView ,以便 subview C 填充整个 ScrollView 矩形( ScrollView 边界),您需要在 View Controller 中执行以下操作:

CGRect rectToZoom = [self.D convertRect:self.C.frame fromView:self.B];

[self.scrollView zoomToRect:rectToZoom animated:YES];

这是假设您返回 View D 作为要缩放的 View :

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

ScrollView 的 maximumZoomScale、contentSize 和 contentInset 属性必须足够大以允许滚动和缩放(检查:尝试手动执行您想要的操作,看看是否可行)。

关于ios - UIScrollView-zoomToRect :animated: and CGPoint conversion between views,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20130474/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com