swift - 尝试在 UIScrollview 中设置宽图像,高度固定
问题描述
已经被这个问题卡住了2天的新手(请帮助!)。我的图像比屏幕宽得多。我希望用户能够在图像上水平滚动,并且还希望图像具有特定高度,同时保持其纵横比。
目前 UIImageView 嵌套在 ScrollView 中。ScrollView 在所有 4 个方向上对安全区域都有约束,将其放置在屏幕的上半部分(距安全区域底部 250 处)。ImageView 对 Scrollview 的“内容布局指南”具有 0 的所有 4 个约束,以及与 ScrollView 的“框架布局指南”具有相等高度的第 5 个约束。
我最初尝试将图像内容模式设置为“Aspect Fit”。这保持了纵横比并在 ScrollView 中将图像设置为所需的高度,但是在图像的任一侧留下了大量的透明度,因此用户必须滚动一段时间才能看到图像。为此,我找不到仅在非透明部分的范围内包含滚动视图的解决方案,因此我将图像内容模式更改为“方面填充”。
这消除了两边的透明度,但图像现在太高并且垂直离开屏幕。我在 ImageView Size Inspector 上设置了“Clip to bounds”,并在代码中将其设置为 true,但图像仍然很高并且超出了指定的高度约束。我也用过:
gym_imageView.sizeToFit()
scrollView.contentSize = gym_imageView.frame.size
但这些都不能解决它。
我的预期结果是具有原始尺寸(W:12064px,H:1696px)的图像会将自身调整为约束高度(Scrollview的内容布局指南的顶部和底部的0到顶部和底部,这反过来又是安全区域顶部的约束0 , 250+ 到安全区域的底部),同时保持纵横比。
有任何想法吗?
解决方案
内容模式会改变图像在 imageView 中的显示方式,但它不会调整 imageView 本身的大小。
你应该在你的 imageView 上设置一个明确的纵横比约束,乘数为12064:1696
. 然后Auto Layout将能够根据它已经知道所需高度的事实来计算 imageView 的正确宽度。
推荐阅读
- git - 我应该如何在 VS 中正确克隆 github repo?
- react-native - 使用 react-native-cli 或 expo-cli 的移动应用程序?
- zsh - 从 zsh 历史记录中删除命令
- r - 如何找到多个未知的根
- vue.js - 为什么Vue绑定中的javascript表达式
不工作? - java - 如何处理错误:无法访问 jarfile - docker
- reactjs - 无法读取未定义地图的属性
- react-native - Axios 在 then 之外更新值以打破循环
- python-3.x - windows sockets, udp 和 udp 回复不同的地址
- javascript - 用少于 10 步的步数将骑士从位置 1 移动到位置 2