ios - UIScrollView -zoomToRect :animated: and CGPoint conversion between views
<p><p>我有一个 <code>UIScrollView</code> <strong>A</strong> 和一个 subview<strong>B</strong>,(它本身就是 contentView <strong>D</strong> 的 subview <code>A</code> 的 strong> - 所以 <strong>B</strong> 是 <strong>NOT</strong>ScrollView<code>A</code>) 的 contentView,它有一个 subview ,我们称之为<strong>C</strong>。 </p>
<pre><code>+------------------------+
| A |
| |
|+-------------------+ |
||D (=contentView) | |
||+-----------+ | |
||| B | | |
||| +--+ | | |
||| |C | | | |
||| +--+ | | |
||+-----------+ | |
|+-------------------+ |
+------------------------+
</code></pre>
<p>我希望 scrollView 能够精确缩放,以便 C 填满我的 iPhone 屏幕,或者至少尽可能大地向我显示它。
我无法理解缩放之前 ScrollView 的 <code>zoomScale</code> 是如何进行的(假设我在 ScrollView 已经放大并且 zoomScale 为 2.45 时放大)。
那么第一个问题是,zoomScale 会影响 UIScrollView 放大到的矩形吗?</p>
<p>我的第二个问题是关于 CGPoint 转换的。 iOS 有一些内置函数可以在 View 之间转换 CGPoints/CGRects,但我根本无法从给定的引用中产生任何有效的东西。</p>
<p>这是我打算做的:</p>
<p>1) 将<strong>C</strong>的原点转换为<strong>A</strong>的坐标系:</p>
<pre><code>CGPoint originConvertedToAsCoordinateSystem = ;
</code></pre>
<p>2) 缩放到 <strong>C</strong> 给定原点的矩形:</p>
<pre><code>//shortened for the purpose of readability
CGPoint p = originConvertedToAsCoordinateSystem;
CGRect zoomRect = CGRectMake(p.x,p.y,C.frame.size.width,C.frame.size.height);
;
</code></pre>
<p>在我给定的示例中,我忽略了 <strong>A</strong> 的<code>zoomScale</code> 的值,因为我真的不知道是乘还是除该值。 </p></p>
<br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
<p><p><strong>问题更新后更新:</strong></p>
<p>如果您想以编程方式缩放和滚动 ScrollView ,以便 subviewC 填充整个 ScrollView 矩形( ScrollView 边界),您需要在 ViewController 中执行以下操作:</p>
<pre><code>CGRect rectToZoom = ;
;
</code></pre>
<p>这是假设您返回 ViewD 作为要缩放的 View :</p>
<pre><code>- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView
{
return self.D;
}
</code></pre>
<p> ScrollView 的maximumZoomScale、contentSize和contentInset属性必须足够大以允许滚动和缩放(检查:尝试手动执行您想要的操作,看看是否可行)。</p></p>
<p style="font-size: 20px;">关于ios - UIScrollView -zoomToRect :animated: and CGPoint conversion between views,我们在Stack Overflow上找到一个类似的问题:
<a href="https://stackoverflow.com/questions/20130474/" rel="noreferrer noopener nofollow" style="color: red;">
https://stackoverflow.com/questions/20130474/
</a>
</p>
页:
[1]