UIStackView 内的 ScrollView
ScrollView inside a UIStackView
这是我的视图层次结构
-- UIStackView --- UIScrollView -- UIImageView
StackView 分布设置为 .FillProportionally
但这不起作用,因为 UIScrollView 没有固有的内容大小。
所以我的问题是,由于 UIIMageView 具有固有的内容大小,我是否有任何方法可以将该内容大小传递给 UIScrollView,以便 StackView 可以显示适合视图的大小。
我已经尝试根据 width
和 UIImageView
的 height
设置 scrollView 的 contentSize
,但似乎也不起作用。
如果这是另一种方法,我也不确定在哪里设置约束,我需要基于 ImageView 的 contentSize
为 ScrollView 设置动态大小,这样固定约束就不会帮助。
我还应该指出将 ImageView
作为 scrollView
的子视图的原因是能够在 StackView
中调整 ImageView
的大小
我在回答我自己的问题
您需要覆盖 intrinsicContentSize
属性 的 UIScrollView
在这种情况下
override func intrinsicContentSize() -> CGSize {
if let image = imageView.image {
return CGSizeMake(image.size.width, image.size.height)
}
return CGSizeMake(0, 0)
}
这是我的视图层次结构
-- UIStackView --- UIScrollView -- UIImageView
StackView 分布设置为 .FillProportionally
但这不起作用,因为 UIScrollView 没有固有的内容大小。
所以我的问题是,由于 UIIMageView 具有固有的内容大小,我是否有任何方法可以将该内容大小传递给 UIScrollView,以便 StackView 可以显示适合视图的大小。
我已经尝试根据 width
和 UIImageView
的 height
设置 scrollView 的 contentSize
,但似乎也不起作用。
如果这是另一种方法,我也不确定在哪里设置约束,我需要基于 ImageView 的 contentSize
为 ScrollView 设置动态大小,这样固定约束就不会帮助。
我还应该指出将 ImageView
作为 scrollView
的子视图的原因是能够在 StackView
ImageView
的大小
我在回答我自己的问题
您需要覆盖 intrinsicContentSize
属性 的 UIScrollView
在这种情况下
override func intrinsicContentSize() -> CGSize {
if let image = imageView.image {
return CGSizeMake(image.size.width, image.size.height)
}
return CGSizeMake(0, 0)
}