旋转时未调用 UICollectionViewDelegateFlowLayout 方法

Posted

技术标签:

【中文标题】旋转时未调用 UICollectionViewDelegateFlowLayout 方法【英文标题】:UICollectionViewDelegateFlowLayout methods not called on rotation 【发布时间】:2015-02-13 19:17:31 【问题描述】:

在我的集合视图布局(UICollectionViewFlowLayout 的子类)内部我定义了:

- (BOOL)shouldInvalidateLayoutForBoundsChange:(CGRect)newBounds 
    return YES;

我的期望是,由于旋转是一个边界变化,我的布局将被重新计算。但是,当我在以下位置设置断点时:

- (CGSize)collectionView:(UICollectionView *)collectionView
                  layout:(UICollectionViewLayout *)collectionViewLayout
  sizeForItemAtIndexPath:(NSIndexPath *)indexPath 

屏幕旋转时不触发断点。有谁知道为什么?

【问题讨论】:

【参考方案1】:

collectionView:layout:sizeForItemAtIndexPath: 方法应该在 UI CollectionViewDelegate 类中实现。不在 UICollectionViewLayout 的子类中。 你在哪里实现的?

PS。没有必要同时使用两者。如果您有自定义 UICollectionViewLayout 类,请改用 layoutAttributesForItemAtIndexPath:

【讨论】:

我在作为集合视图委托的视图控制器内部实现了collectionView:layout:sizeForItemAtIndexPath:。使用 layoutAttributesForItemAtIndexPath: 对我不起作用。 collectionView:layout:sizeForItemAtIndexPath 与 CollectionViewDelegate 在同一类中的实现对我有用..

以上是关于旋转时未调用 UICollectionViewDelegateFlowLayout 方法的主要内容,如果未能解决你的问题,请参考以下文章

立方体在旋转时未按预期呈现

调用 popToRootViewControllerAnimated 时未调用 viewWillDisappear

触摸时未调用 didSelectRowAtIndexPath

关闭时未调用 Alamofire 请求

解散时未调用 UNNotificationCenterDelegate

启动相机意图时未调用 onActivityResult?