我遇到的问题只是简单解释但令人难以置信。
我在更改滚动视图内容大小时遇到问题,只需点按一个包含以下代码的按钮
即可if condition {
scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width, 1000 )
button.setTitle("SHOW LESS", forState: .Normal)
} else {
scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width, 200 )
button.setTitle("SHOW MORE", forState: .Normal)
}
我正在使用自动布局,我知道在视图生命周期中框架尚未设置并导致意外的问题,但此代码在IBAcition中执行。奇怪的是,如果内容大小大于200开始,它将缩小。它只是永远不会增长到1000.我唯一的猜测是它与链接的约束有关,这些约束没什么特别的,只是居中并垂直固定,但我不知道从哪里开始调试。此外,当我删除设置的标题调用时,它会增长到1000!我不能为我的生活弄清楚为什么设置标题会弄乱内容大小。有什么想法吗?
答案 0 :(得分:1)
最简洁的方法可能是永远不要自己计算contentSize。当您将所有视图添加到UIScrollview时,它们具有的约束应该明确地确定contentSize。然后,UIScrollView将自动调整其大小。
当您需要在代码中更改某些大小/边距等时,您应该为约束创建一个IBOutlet并更改constraint.constant。 ScrollView将自动调整contentSize。
现在有一个棘手的事情:ScrollView不会减少contentSize,如果这意味着ScrollView中的视图变得不可见。 (我假设在调用showLess时,你正在从ScrollView的contentView中移出一些东西)你能想到的是创建一个Constraint来设置视图和ScrollView底部之间的间距。然后,您可以将此间距设置为负值(因此它将移动到scrollView下方)并将视图设置为隐藏。我想这可以解决你的问题。