【发布时间】:2015-10-22 02:17:08
【问题描述】:
我有一个简单解释但令人难以置信的问题。
我在使用以下代码点击按钮时更改滚动视图内容大小时遇到问题
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。我唯一的猜测是它与链接到按钮的约束有关,这些约束没什么特别的,只是居中并垂直固定,但我不知道从哪里开始调试。此外,当我删除 set title 调用时,它确实增长到 1000!我一生都无法弄清楚为什么设置标题会弄乱内容大小。有什么想法吗?
【问题讨论】:
-
你能解释一下你想要达到的目标吗?为什么要更改
contentSize而不是滚动视图的实际大小?使用自动布局时,您不应该真正手动设置contentSize。也许截图会有所帮助。 -
所以实现的整体功能是在滚动视图中隐藏和显示内容,这需要相当频繁地重新计算内容大小......是否有使用自动布局的首选方法?我已经研究了一些关于自动布局和滚动视图的 UILabel 调整大小的东西和苹果文档,但还没有找到一个很好的解决方案
-
看起来这是一个相当普遍的问题。我在这里找到了一个与你们所说的一致的解决方案。自动布局和 contentSize stackoverflow.com/questions/12846351/… 的行为很奇怪
标签: ios swift uiscrollview uibutton autolayout