我在理解自动布局的工作原理时遇到了问题。我的控制器场景中有以下结构:
View
ScrollView
View
Image View
Constraints
SuperView.Bottom = View.Buttom
SuperView.Trailing = View.Trailing
View.Leading = SuperView.Leading
View.Top = SuperView.Top
Constraints
ScrollView.Top = SuperView.TopMargin
SuperView.TrailingMargin = ScrollView.Trailing (-16)
ScrollView.Leading = SuperView.Leading (-16)
BottomLayoutGuide.Top = ScrollView.Bottom (-40)
这会处理我需要的滚动视图。视图中还有其他内容,但我已经卸载了#34;他们现在首先使图像视图工作。我想让ImageView具有基于屏幕尺寸的宽度(iPhone 5将具有320px,iPhone 6+将具有1080px)。因此,我尝试向ImageView添加约束(View.Trailing = SuperView.Trailing; View.Leading = SuperView.Leading; AspectRatio - 2:1)但它只是让图像尺寸变得非常大,它没有#39甚至适合屏幕。如果我设置高度限制,它可以工作,但我不想放置高度限制,因为我希望大小不依赖于恒定的宽度/高度。
我做错了什么?我不安静地了解AutoLayout;我理解AutoLayout的基本概念,但是当涉及到实现时,我不知道该怎么做......:/
答案 0 :(得分:1)
图像的大小/宽高比与图像视图的contentMode
有关。适当地设置contentMode
(听起来你可能想要UIViewContentModeScaleAspectFit
)并将clipsToBounds
设置为true,这样图像就不会比图像视图大。然后限制图像视图的大小,否则将调整大小以适合图像。更好的是,使用更像正确尺寸的图像;你显然正在使用一个巨大的图像(否则它不会被绘制得很大),这很浪费。
答案 1 :(得分:1)
要检查/尝试两件事: