解决横竖屏切换问题导致UIScrollView类型偏移问题

515 阅读1分钟

常见情况:

场景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布局