【发布时间】:2019-12-23 14:50:09
【问题描述】:
我正在尝试将 UIImageView 放置在 Scrollview 中。 我做了约束使 UIImageView 在 Scrollview 中居中。这行得通,但如果我放大,位置会向右移动。所以例如我无法放大图像并查看图像的最右侧部分。
任何想法为什么会发生这种情况,以及如何解决这个问题?
非常感谢!
编辑:
【问题讨论】:
标签: ios swift uiimageview scrollview center
我正在尝试将 UIImageView 放置在 Scrollview 中。 我做了约束使 UIImageView 在 Scrollview 中居中。这行得通,但如果我放大,位置会向右移动。所以例如我无法放大图像并查看图像的最右侧部分。
任何想法为什么会发生这种情况,以及如何解决这个问题?
非常感谢!
编辑:
【问题讨论】:
标签: ios swift uiimageview scrollview center
在滚动视图中直接定位或限制某些东西完全没有意义(除非你知道如何利用派生的孩子的高度来正确地为你工作)
UIScrollView 本身不是 UIView。它提供了一个围绕子视图的包装器,这些子视图可在固定高度(UIScrollView 的高度)内滚动。
将滚动的内容将是 contentView 的高度(UIScrollView 的直接子级或内部所有项目的派生高度)。注意我在这里谈论垂直滚动视图。水平的原理相同。
如果你想让 UIImageView 在 UIScrollView 的“内容”中居中,那么在 UIScrollView 下定义 一个 子 UIView 并给它一个大于 UIScrollView 高度的高度。然后,您可以尝试通过对 UIView 设置约束来使 UIImageView 居中。
-> UIScrollView
-> ContentView (UIView) //constraint this and pin edges to UIScrollView
-> UIImageView //constraint this with the ContentView, not UIScrollView
【讨论】:
UIPinchGestureRecognizer,同时知道您可以在运行时调整自动布局约束(只需将约束拖到情节提要上)。您将必须编写一些逻辑来反映您的捏出(将顶部和左侧约束减少到 0)和返回(恢复前一个)的场景。您也可以考虑删除滚动视图,因为我没有看到它在此处添加任何值(除非这只是一个示例,并且您有更多的项目实际上跨度大于视口)