【问题标题】:UIImageView inside Scrollview - out of center while zoomingScrollview 内的 UIImageView - 缩放时偏离中心
【发布时间】:2019-12-23 14:50:09
【问题描述】:

我正在尝试将 UIImageView 放置在 Scrollview 中。 我做了约束使 UIImageView 在 Scrollview 中居中。这行得通,但如果我放大,位置会向右移动。所以例如我无法放大图像并查看图像的最右侧部分。

看起来像这样:

任何想法为什么会发生这种情况,以及如何解决这个问题?

非常感谢!

编辑:

目前的行为:

它应该如何表现:

【问题讨论】:

    标签: ios swift uiimageview scrollview center


    【解决方案1】:

    在滚动视图中直接定位或限制某些东西完全没有意义(除非你知道如何利用派生的孩子的高度来正确地为你工作)

    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
    

    【讨论】:

    • 您好 jms,非常感谢您的回答!正如您可以想象的那样,我对 swift 非常陌生,而且我发现的所有教程都没有提到这一点。所以我在我的 UIScrollView 和 UIImageView 之间添加了一个 UIView,使 UIScrollView 和 UIView 的宽度和高度相同,并将 UIImageView 居中在 UIView 中。现在图像按预期居中,我可以放大和缩小!只有一个新问题。如果我将其缩放并拖动到一侧,我会有一些白色区域,因为 contentView 比 Image 大,是否有可能在缩放时将边界发送到 UIImageView?
    • 让我直说。放大时需要将 UIImageView 的宽度增加到 contentView 的宽度吗??
    • 您好,我在第一篇文章中添加了两张图片,希望这有助于理解我的问题。我不想在缩放时有那个白色区域,如果我放大并将图像移动到最远的方向之一,我想让它粘在图像的边界上,而不是内容视图的边框。
    • 没有合乎逻辑的方法可以使用正常的缩放场景来解决您的问题。您需要的是UIPinchGestureRecognizer,同时知道您可以在运行时调整自动布局约束(只需将约束拖到情节提要上)。您将必须编写一些逻辑来反映您的捏出(将顶部和左侧约束减少到 0)和返回(恢复前一个)的场景。您也可以考虑删除滚动视图,因为我没有看到它在此处添加任何值(除非这只是一个示例,并且您有更多的项目实际上跨度大于视口)
    猜你喜欢
    • 2015-10-03
    • 2023-04-03
    • 1970-01-01
    • 2012-10-22
    • 1970-01-01
    • 1970-01-01
    • 2012-12-28
    • 1970-01-01
    • 2011-09-20
    相关资源
    最近更新 更多