Ios Objective-c:视图的动态大小,取决于它';内容
我有一个在滚动视图中的视图。stackView的内容是动态的,这取决于使用方法“addArrangedSubview”创建和添加的视图数量。如果我有几个子视图,它们之间的间距太大,如果我有太多视图,它们会被压缩 我有: _视图控制器 |__看法 |____滚动视图 |______stackView(动态内容) 我将stackview设置为:Ios Objective-c:视图的动态大小,取决于它';内容,ios,objective-c,uistackview,Ios,Objective C,Uistackview,我有一个在滚动视图中的视图。stackView的内容是动态的,这取决于使用方法“addArrangedSubview”创建和添加的视图数量。如果我有几个子视图,它们之间的间距太大,如果我有太多视图,它们会被压缩 我有: _视图控制器 |__看法 |____滚动视图 |______stackView(动态内容) 我将stackview设置为: 对齐:填充 分布:等间距 间距:5 当然,约束条件包括顶部/底部/前导/尾随 我希望在每次添加视图时都增加视图的大小,并保持添加的子视图的大小。 可能是
- 对齐:填充
- 分布:等间距
- 间距:5 当然,约束条件包括顶部/底部/前导/尾随
UIScrollView
与其他视图不同。它有一个contentView
。此内容视图负责滚动行为。如果滚动视图的框架中不适合的内容多于启用的滚动
因此,为了正确设置内容视图,滚动视图必须知道内容视图的大小,以便知道何时停止滚动。此处的大小表示实际的宽度和高度。但是这个大小不能从约束的设置中确定,因为它们是由自动布局引擎动态计算的
在您的例子中,堆栈视图充当滚动视图的内容视图。您可能已将堆栈视图的所有边固定到它的superview-UIScrollView
。但这还不足以让滚动视图计算内容大小。您还必须提供:
宽度
和高度
-如果您的滚动视图可在两个轴上滚动
宽度
-如果要垂直滚动并限制水平滚动
高度
-如果要水平滚动并限制垂直滚动
当您需要水平滚动时,必须通过提供与滚动视图相同的堆栈视图的高度来限制垂直滚动(它并不总是需要与滚动视图的高度相同,但应通过其他方式覆盖滚动视图的整个高度)。您还需要一个占位符x轴约束,以使界面生成器
满意。内容视图的实际宽度将被添加到堆栈视图的子视图所覆盖
重要提示:您应该在堆栈视图中添加一个水平容器内约束,并使其成为将在构建时删除的占位符。您可以通过在文档大纲中选择约束并打开大小检查器来执行此操作,您将在其中获得一个在生成时删除
复选框。勾选该复选框,即可开始
您的滚动视图有一个内容视图,指示滚动视图中可见的窗口。我假设堆栈视图被约束到滚动视图的边界,因此需要调整这些边界。如果滚动视图的高度仅为内容视图的大小,则堆栈视图将尝试挤入该空间。很抱歉,我没有得到您的答案。。我想讨论的情况是,当一个子视图添加到stackview时,堆栈的大小会动态增加,因此scrollview和view..也会增加。您是如何设置scrollview和stack视图的?从故事板还是从代码?从故事板井。伟大的我有一篇关于这个话题的详细帖子。最好知道滚动是水平还是垂直。我将在这里添加一个答案以及该帖子的链接,以满足您的需要。太好了,谢谢您的详细回答!!看来这正是我需要的,我会试试看,让你知道!可以如果这有帮助的话,请别忘了向我的中篇文章表达你的爱,你,你救了我的命。。非常感谢。和优秀的媒体文章,如此清晰和解释。很高兴知道你克服了这个问题。