UIScrollView与自动布局的缩放

11

我知道有几个相关问题,但我无法找出如何做到这一点(那里的答案都没有帮助我),所以这是我的问题版本。

我有一个 UICollectionView ,它设置为水平滚动。 每个单元格内部都有一个 UIScrollView ,而在 UIScrollView 内有一个 UIImageView

现在, UIImageView 显示的图像是从互联网加载的,我无法想出一种使用storyboards和autolayout使缩放工作正常的方法。

如果我设置将我的 UIScrollView 约束到其容器的约束,一切正常。 一旦我将 UIImageView 绑定到 UIScrollView ,XCode开始抱怨 UIScrollView 的大小不明确。

如果我在Interface Builder中不添加任何约束,则图像的显示大小不正确(该死!)。

所以,我被卡住了。 我不知道要制作什么类型的约束以及哪个视图需要绑定到什么。 我知道我的完美世界结果是一个行为类似于原生iOS照片应用程序的视图控制器。也就是说,图像显示为屏幕尽可能大的大小(上下或左右具有黑色带,具体取决于图像的方向),您可以对其进行缩放和拖动。

请帮个忙!

注意

在发布自己的问题之前,我确实阅读了这些帖子

2个回答

2
我不确定这是否能帮到您解决缩放问题,但苹果提供了一份技术说明书,介绍如何在自动布局中使用滚动视图:Technical Note TN2154, UIScrollView And Autolayout 对于滚动视图,重要的是,在滚动视图内的子视图的约束不是绑定在滚动视图本身,而是绑定在滚动视图的父视图上(在您的情况下是集合视图单元格)。

0

它可以工作

你可以很容易地做到这一点。但实际上并不容易,我已经苦苦挣扎了相当长的时间!我设法在可滚动区域内实现了自动布局。只是它只能垂直方向。

  • 将内在大小设置为“占位符”(对于可滚动视图)
  • 根本不要设置contentSize
  • 将右约束附加到包装器上(以便相对于父视图)

    self.view.addConstraint(NSLayoutConstraint(
        item:self.view, attribute:.Trailing,
        relatedBy:.Equal, toItem:contentView,
        attribute:.Trailing, multiplier:1, constant:0))
    scrollView.setTranslatesAutoresizingMaskIntoConstraints(false)
    

所以,在你的情况下,你的contentView右侧应该与图像的右侧相连

试一试,肯定会让你的缩放工作正常

这里有一个例子,可能会帮助你https://github.com/nchanged/swift-content-manager/tree/master


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接