HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – Collection View不会在Rotation更新布局大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
这是应用程序处于纵向模式时的视图.

当它旋转到横向模式时,它看起来像这样

视图调试器显示UIWindow未旋转,如此处所示

UICollectionViewController是通过StoryBoard创建的.我已经尝试了子类化实现shouldInvalidateLayoutForBoundsChange的UICollectionViewFlowLayout,但它并没有解决我的问题.

- (BOOL)shouldInvalidateLayoutForBoundsChange:(CGRect)newBounds {
    CGRect oldBounds = self.collectionView.bounds;
    if (CGRectGetWidth(newBounds) != CGRectGetWidth(oldBounds)) {
        return YES;
    }
    return NO;
}

请提供下一步检查的内容或要求调试其他代码的请求.

编辑 – 正如MirekE所建议的那样,我试图向CollectionView添加约束但却无法使用. Editor-> Pin的所有选项都不适用于CollectionView.

编辑,回应安德里亚 –

我的目标是iOS8.3.我的理解是旋转时调用的主要方法是viewWillTransitionToSize:withTransitionCoordinator:,它来自UIContentContainer protocol.我已将以下内容添加到我的CollectionViewController中,但同样的问题仍然存在

-(void)viewWillTransitionToSize:(CGSizE)size
      withTransitionCoordinator:(id <UIViewControllerTransitionCoordinator>)coordinator {
    [self.collectionView.collectionViewLayout invalidateLayout];
    [self.collectionView reloadData];
}

解决方法

我不知道你针对哪个iOS版本,但让我想你知道视图控制器中调用的旋转过程和方法.

在其中一种方法中,您只需要调用

[self.collectionView.collectionViewLayout invalidateLayout];

并且可能取决于你的布局-reloadData
不需要子类.

编辑

我使用这种方法,我想这不起作用,因为你应该在调整大小后重新传输集合:

- (void) willTransitionToTraitCollection:(UITraitCollection *)newCollection withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator {
    [super willTransitionToTraitCollection:newCollection withTransitionCoordinator:coordinator];


    [coordinator animateAlongsideTransition:^(id<UIViewControllerTransitionCoordinatorContext> context) {
        [self.collectionView.collectionViewLayout invalidateLayout];            
    } completion:^(id<UIViewControllerTransitionCoordinatorContext> context) {
        [self.collectionView reloadData];
    }];

}

我正在做什么将布局失效过程附加到动画过程.

大佬总结

以上是大佬教程为你收集整理的ios – Collection View不会在Rotation更新布局全部内容,希望文章能够帮你解决ios – Collection View不会在Rotation更新布局所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。