常见情况:
场景1:以UIScrollView及其子类view,contentSize达到一定的长度,滚动到某个位置时,进行设备横竖屏切换,再次回归设备切换前的方向时,滚动位置发生了变动;
场景2:当前控制器为UIScrollView及其子类view,contentSize达到一定的长度,滚动到某个位置时,进行设备横竖屏切换,或者进行跳转下一控制器(且下一控制器为改控制器的屏幕方向不同;例如:当前屏幕方向和竖屏,下一控制器方向为横屏)。
原因分析:
原因1:设备在横竖屏切换时,会导致屏幕宽(width)和高(height)互换,这样会导致以UIScrollView及其子类view的contentOffset变化,引起滚动位置的变化;
原因2:以UIScrollView及其子类view,进行了自动化布局,而不是定宽定高布局。
//可以尝试打印、观察变化contentOffset
- (void)viewDidLayoutSubviews {
[super viewDidLayoutSubviews];
NSLog(@"偏移量---%@",NSStringFromCGPoint([self.collectionView contentOffset]));
}
解决办法:直接采用frame布局