我对可滚动内容有疑问。基本上,我想在屏幕上放置一个ImageView
宽度等于Label
宽度的ImageView
和一个screen
。 height
取决于intrinsic
content
aspect
ratio
(而宽度始终等于屏幕宽度)。
label
是20间距的波纹管ImageView
。这意味着整个内容高度可以小于或等于甚至大于根view
。我尝试将Label
和ImageView
放在StackView
内(ImageView
的设置为Aspectfit
),然后将StackView
放在{{ 1}}。如下设置ScrollView
。
问题是ImageView与顶部constraints
之间以及Superview
和ImageView
之间的距离太大(理想情况下应为20)。有什么方法可以达到预期的结果?
PS:我试图设置stackView分布,但没有帮助
答案 0 :(得分:0)
tl; dr 删除纵横比约束并为UIImageView
添加高度约束。
重要的是要了解UIImageView
基本上是容纳图像的容器,并且其尺寸不一定反映图像的尺寸(除非您手动使它们相等)。当您将Aspect Fit选择为UIImageView
的内容模式时,容器的大小不会更改为与图像的大小相对应;此设置仅更改了将图像放置在容器内的方式。
从您的屏幕截图中可以看到,UIImageView
的高度大于宽度;此外,长宽比由您添加的约束条件固定。当您在该容器中放置横向图像时,后者在图像的顶部和底部都留有白色条(就像在旧显示器上观看宽屏视频时看到的黑条一样)。将内容模式更改为纵横比填充或缩放以填充以查看UIImageView
的实际大小。
要解决此问题,请删除纵横比约束并为UIImageView
或UIStackView
设置一个固定高度。如果我是你,我可能会将UIStackView
的高度设置为等于Safe Area
,以便无论堆栈视图有多高,它都不会超出屏幕边界。