我有一个带有几个大UIViews的UIScrollView(大于滚动视图的可见区域)。我有以下几行:
[[self scrollView] setContentSize:CGSizeMake([self scrollView].bounds.size.width, [ListItemView instanceHeight] * MAX_NUMBER_ITEMS)];
ListItemView是一个自定义视图,instanceHeight是一个静态高度,它们都有(即第二个参数应该是所有内容的总高度,工作正常)。问题是,即使我已经使内容大小(我相信)等于滚动视图的实际大小,它仍然水平滚动(在所有iPhone大小上模拟)。
水平滚动条继续出现,直到我将内容大小设置为250.我通过反复试验找到了这个(在251处出现水平滚动条,在250处它没有)。为什么是这样?一旦contentSize小于scrollBar的实际大小(这是屏幕的宽度,320),我希望滚动条消失。
答案 0 :(得分:0)
使用autolayout时的技巧是你永远不要明确地设置任何东西的大小;如果在整个视图层次结构中一致地设置了约束,则所有内容都会自动调整大小(包括scrollView的内容)。如果无法预先指定视图的大小,则应在自定义视图子类中重写intrinsicContentSize并返回大小。
在您的情况下,创建一个包含所有ListItemViews的自定义视图。在该自定义类中返回intrinsicContentSize中ListItemViews的总高度 - 您根本不需要在scrollView中设置内容大小。