ScrollView没有正确调整大小

时间:2016-01-18 03:02:49

标签: ios uiviewcontroller uiscrollview

我的ViewController中嵌入了ScrollView。在ScrollView内部,我嵌入了一个内容视图(UIView),其中UIImage设置为匹配ScrollView的左侧,顶部和右侧,动态高度根据用户可以在ViewController之后加载的图像的宽高比而变化负载。在内容视图中有三个按钮全部水平对齐,并且彼此间隔均匀。

当用户加载的照片对于屏幕来说太大时,它应该适当地调整ScrollView和内容视图的大小,以允许滚动查看按钮,但它只是将屏幕底部的按钮组合起来。

以下是按钮的外观: enter image description here

以下是照片太大时会发生的情况: enter image description here

以下是ScrollView的约束: enter image description here

这是我的调整代码:

let img : UIImage = info[UIImagePickerControllerOriginalImage] as! UIImage
            let screenSize: CGRect = UIScreen.mainScreen().bounds
            let multiplyNum = screenSize.width / img.size.width
            imageViewHeightConstraint.constant = (multiplyNum*img.size.height)
            imageView.image = img

即使我尝试以编程方式将ScrollViews高度更改为非常大的数字,它仍然不会比ViewController更大(不滚动)。

ContentView的约束: enter image description here

ImageView的约束:

enter image description here

前2个按钮的约束:

enter image description here

最后一个按钮的约束:

enter image description here

1 个答案:

答案 0 :(得分:1)

确保设置完全定义所有元素的垂直布局的所有约束(图像的顶部约束,元素之间的垂直空间和最后一个元素的底部约束),并尝试更改内容拥抱的优先级或压缩阻力元素。

修改

您可以使用此视图层次结构实现该行为:

- UIView
  - UIScrollView
    - UIImage
    - UIButton
    - UIButton
    - UIButton

如果您设置如下约束,则无需添加容器视图:

滚动视图:

前导,尾随,顶部和底部约束view(全0)

内部视图(水平):

  1. imageViewscrollView
  2. 的主要约束
  3. imageViewscrollView
  4. 的尾随约束
  5. imageViewview
  6. 的相等宽度

    内部观点(垂直):

    1. imageViewscrollView
    2. 的最高约束
    3. imageView的高度限制(此约束常量将根据图像的大小而变化)
    4. imageViewbutton1
    5. 的水平空间
    6. button1button2
    7. 的水平空间
    8. button2button3
    9. 的水平空间
    10. button3scrollView
    11. 的底部约束

      没有必要改变内容拥抱的优先级或元素的抗压缩性。 我已经检查过它在项目中是否有效。