UIScrollView 在不正确的点上缩放

Posted

技术标签:

【中文标题】UIScrollView 在不正确的点上缩放【英文标题】:UIScrollView zooming on incorrect point 【发布时间】:2016-09-03 13:49:23 【问题描述】:

我有一个带有图像的 UIScrollView,并且该图像位于容器视图中。视图层次结构如下所示:

UIScrollView
  UIView
    UIImageView

平移效果很好,但是当我使用捏合手势进行缩放时,图像会改变大小,但不会相对于原点移动,因此两个手指下方的中心点会随着手势的进行而移动。这使得放大特定点变得非常困难,因为它会随着您的缩放而滑开。

所涉及的视图描述:

<MyApp.MyView: 0x7ff6fd827e00; baseClass = UIScrollView; frame = (0 0; 375 667); autoresize = W+H; gestureRecognizers = <NSArray: 0x61800004a4d0>; layer = <CALayer: 0x618000023420>; contentOffset: 684, 487.5; contentSize: 1731.4584832023011, 1154.3056554682007>

<UIView: 0x7ff6fbe0c4d0; frame = (0 0; 1728 1152); transform = [2.2028669620902912, 0, 0, 2.2028669620902912, 0, 0]; layer = <CALayer: 0x6180000234c0>>

<UIImageView: 0x7ff6fbe09cd0; frame = (0 0; 1728 1152); opaque = NO; userInteractionEnabled = NO; layer = <CALayer: 0x618000023340>>

我在 UIView 包装器中有 UIImageView,因为我将在图像上覆盖其他需要缩放/缩放图像的视图。

在缩放期间我自己的代码很少运行。 UIScrollViewDelegate 返回 UIView(UIImageView 的父级),并配置滚动视图:

minimumZoomScale = 0.2
maximumZoomScale = 3.0
contentSize = image.size

【问题讨论】:

【参考方案1】:

好吧,我制作了一个使用您的视图结构的简单项目。我没有面对这些问题。可能,您应该检查以下内容:

是自动布局约束设置正确方式 您的父视图是否正确缩放 是 UIImageView 的模式适合您的需求 希望这可能会有所帮助

【讨论】:

我只是做了同样的事情——现在想弄清楚有什么不同。当我弄清楚时会更新。谢谢。 找到了——我在 UIScrollView 的 layoutSubviews 中设置了 contentView.frame。我的愚蠢错误,感谢您调查。

以上是关于UIScrollView 在不正确的点上缩放的主要内容,如果未能解决你的问题,请参考以下文章

用UIScrollView缩放时,无法正常滚动到下端

使用缩放 uiscrollview 的帧不正确

正确缩放包含许多子视图的 UIScrollView

使用许多图像缩放 UIScrollView 的正确方法?

不使用 UIScrollview 缩放 UIView

UIScrollView 显示第一张图像正常,但后续图像缩放和平移不正确