我的ViewController中嵌入了ScrollView。在ScrollView内部,我嵌入了一个内容视图(UIView),其中UIImage设置为匹配ScrollView的左侧,顶部和右侧,动态高度根据用户可以在ViewController之后加载的图像的宽高比而变化负载。在内容视图中有三个按钮全部水平对齐,并且彼此间隔均匀。
当用户加载的照片对于屏幕来说太大时,它应该适当地调整ScrollView和内容视图的大小,以允许滚动查看按钮,但它只是将屏幕底部的按钮组合起来。
这是我的调整代码:
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更大(不滚动)。
ImageView的约束:
前2个按钮的约束:
最后一个按钮的约束:
答案 0 :(得分:1)
确保设置完全定义所有元素的垂直布局的所有约束(图像的顶部约束,元素之间的垂直空间和最后一个元素的底部约束),并尝试更改内容拥抱的优先级或压缩阻力元素。
修改强>
您可以使用此视图层次结构实现该行为:
- UIView
- UIScrollView
- UIImage
- UIButton
- UIButton
- UIButton
如果您设置如下约束,则无需添加容器视图:
滚动视图:
前导,尾随,顶部和底部约束view
(全0)
内部视图(水平):
imageView
到scrollView
imageView
到scrollView
imageView
到view
内部观点(垂直):
imageView
到scrollView
imageView
的高度限制(此约束常量将根据图像的大小而变化)imageView
到button1
button1
到button2
button2
到button3
button3
到scrollView
没有必要改变内容拥抱的优先级或元素的抗压缩性。 我已经检查过它在项目中是否有效。