在下面的代码示例self.contentView
中,指的是UIScrollView
有问题的。
// Scroll to bottom.
CGPoint bottomOffset = CGPointMake(0, self.contentView.contentSize.height -
self.contentView.bounds.size.height);
if (bottomOffset.y >= 0.0)
{
[self.contentView setContentOffset:bottomOffset animated:YES];
}
奇怪的是,在 iOS 6 中这工作得非常好,但在 iOS 7 中,滚动视图(假设它contentSize
的 垂直方向大于它的frame.size.height
)只滚动到添加到滚动视图的最底部子视图的最底部。
例如,如果以下情况成立:
self.contentView.frame.size.height == 50.0
self.contentView.contentSize.height == 100.0
aSubView.frame.origin.y == 50.0
aSubView.frame.size.height == 20.0
滚动代码只会滚动直到aSubView
可见;self.contentView.contentOffset.y == 20.0
而不是self.contentView.contentOffset.y == 50.0
在整个滚动视图的底部。
这(当然)会发生,直到以编程方式将另一个子视图添加到self.contentView
(通过用户交互),然后一切都会自行纠正。
为清楚起见,我在滚动代码之前和之后设置断点以测量对self.contentView.contentOffset
.
另一个有趣的事实是,如果我直接删除animated
并设置contentOffset
它,它可以在 iOS 7 上按预期工作,但我更喜欢保留动画。
注意:不使用界面生成器