iphone - UIScrollView:缩放后内容偏移计算

标签 iphone uiscrollview zooming

有人可以建议在 UIScrollView 放大后使用哪个公式来计算内容偏移吗?让我们考虑以下示例: 我有一个内容 View 大小为 (1000, 1000) 的 UIScrollView,那么如果我以编程方式 setZoomScale 为 2.0 并在 scrollViewDidEndZooming:withView:atScale 方法中,我将得到以下结果:

contentSize before zoom = {1000, 1000}
contentOffset before zoom = {0, 0}
scale = 2.000000
contentSize after zoom = {2000, 2000}
contentOffset after zoom = {160, 230}

我需要知道 contentOffset {160, 230} 的新值是如何计算的。在这种情况下,用于计算内容偏移量的公式是否存在任何依赖性?

谢谢

最佳答案

这可能相关,也可能不相关,但请注意,160x230 是 iPhone 分辨率的一半,减去状态栏:320x460。尝试更改 UIScrollView 的框架或其 super View 的框架,并查看这对数字有何影响。

编辑:仔细想想,偏移量是 ScrollView 大小的一半是完全合理的,因为它将在两个方向上均匀扩展。因此,公式为:contentOffset = (scrollView.frame.size.width/2 * (scaleAfter - scaleBefore), scrollView.frame.size.height/2 * (scaleAfter - scaleBefore)) .

因此,如果比例为 4.0f,则偏移量将为:(320/2 * (4-1), 460/2 * (4-1)) => (480, 690) 。尝试使用 4 的比例,看看是否会出现 (480, 690)。

关于iphone - UIScrollView:缩放后内容偏移计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3954757/

相关文章:

iphone - 真机核心数据问题

iphone - 如何在我的应用程序代码中拦截框架的日志消息?

ios - UIScrollView 单向分页

ios - NSTimer 在缩放时没有按应有的方式工作

iphone - 如何将选项(到 didFinishLaunchingWithOptions)传递到我从调整中激活的应用程序?

iphone - 从代码打开 map 应用程序 - 在哪里/如何找到 "Current Location"?

objective-c - 无限水平滚动 UIScrollView

iphone - 如何计算减速结束后 ScrollView 将停止的 contentOffset?

android - 使用 ViewPager 实现捏缩放

zooming - 在放大的散点图中获取区域或元素