【问题标题】:how to call sizeForItemAtIndexPath method after screen rotates屏幕旋转后如何调用sizeForItemAtIndexPath方法
【发布时间】:2015-12-07 04:50:46
【问题描述】:

我已经使我的集合视图单元格以编程方式计算,并且我正在使用sizeForItemAtIndexPath 方法来设置单元格的大小。

但是当屏幕旋转时,我需要重新计算尺寸并为单元格设置它们。那么,如何在屏幕旋转后再次调用该函数?

顺便说一句,我知道didRotateFromInterfaceOrientation 方法,但我遇到的唯一问题是我不知道如何再次调用设置单元格的大小。

谢谢

【问题讨论】:

  • 方向改变后重新加载你的collectionview。
  • 这个问题已经问过了。

标签: ios objective-c swift uitableview uicollectionview


【解决方案1】:

使用更新的 UIViewController 方法的另一种方式

- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator
{
    [coordinator animateAlongsideTransition:^(id<UIViewControllerTransitionCoordinatorContext> context)
     {

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

    [super viewWillTransitionToSize:size withTransitionCoordinator:coordinator];
}

【讨论】:

    【解决方案2】:

    您可以在此方法中重新加载您的集合视图:当设备改变其方向时调用此方法。重新加载collectionview会调用sizeForItemAtIndexPath。

    - (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
    {
        [collectionView reloadData]; // change collectionView with your collection view
    }
    

    【讨论】:

    • ,还有其他更好的方法吗?因为调用reloadData会调用很多方法。我只需要调用一个方法。这可能吗?
    • 如果您使用自动布局,那么您可以调用。 [self layoutIfNeeded].
    【解决方案3】:

    计算单元的动态可以用自动计算代替。

    UICollectionViewFlowLayout *flowLayout = (UICollectionViewFlowLayout *) self.collectionView.collectionViewLayout;
    flowLayout.estimatedItemSize = CGSizeMake(estimatedWidth, estimatedHeight)];
    

    【讨论】:

    • estimatedItemSize 做什么?我想在每个屏幕尺寸和方向上显示两列单元格。这个方法能做到吗?
    【解决方案4】:

    试试这个

    - (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
    {
        [collectionView reloadInputViews]; 
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多