在iOS 7中,给定一个UICollectionView,如何在底部启动它?考虑一下iOS消息应用程序,当 View 可见时,它总是从底部开始(最近的消息)。

最佳答案

问题是,如果您尝试在viewWillAppear中设置集合 View 的contentOffset,则该集合 View 尚未呈现其项目。因此self.collectionView.contentSize仍为{0,0}。解决方案是向集合 View 的布局询问内容大小。

此外,您将要确保仅在contentSize高于集合 View 的边界时才设置contentOffset。

完整的解决方案如下所示:

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];

    CGSize contentSize = [self.collectionView.collectionViewLayout collectionViewContentSize];
    if (contentSize.height > self.collectionView.bounds.size.height) {
        CGPoint targetContentOffset = CGPointMake(0.0f, contentSize.height - self.collectionView.bounds.size.height);
        [self.collectionView setContentOffset:targetContentOffset];
    }
}

关于ios - 在底部启动UICollectionView,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21800400/

10-10 22:00