如何在使用UICollectionViewController时为UICollectionView添加居中的UIActivityIndi​​cator?

时间:2014-01-02 14:19:12

标签: ios objective-c uicollectionview uiactivityindicatorview

我从未使用UITableViewControllers或UICollectionViewControllers,因为您可以通过使用UIViewController及其根UIView来获得相同的功能,然后在xib或storyboard中添加UITableView并分配其委托和数据源。我还能够将活动指示器放在根UIView的中心。

现在,当使用UICollectionViewController,其根视图是UICollectionView时,事情变得有点复杂。我需要更新其他人的一些代码,他们将活动指示器放在UICollectionView(在故事板中)。问题是,当重复使用单元格时,此活动指示器会被隐藏,因为活动指示器视图是最底层的。我无法更改可见性优先级故事板,并且此视图中的代码didLoad无法正常工作:

[self.itemsCollectionView bringSubviewToFront:self.activityIndicator];

因为集合视图单元格的标签,图像等视图稍后放置在collectionView:cellForItemAtIndexPath:中。我可以尝试调用bringSubviewToFront:在collectionView:cellForItemAtIndexPath:但这将是一个错误的决定。有什么想法在使用UITableViewControllers或UICollectionViewControllers时如何实现?

恕我直言,使用UITableViewControllers或UICollectionViewControllers的唯一原因是因为在设计布局时静态单元格未显示故事板。

UPDATE 看来iOS在UICollectionViewControllerWrapperView中包装了UICollectionView。试图在viewWillAppear:

中为此包装器视图添加活动
[self.itemsCollectionView.superview addSubview:self.activityIndicator];

但没有运气 - 活动指标仍低于细胞。

1 个答案:

答案 0 :(得分:1)

我结束了在故事板中重构现有的UICollectionViewController:我用TextEdit打开storyboard xml文件,搜索屏幕并将其类型从collectionViewController更改为viewController,因为无法找到另一种方法如何更改控制器的类型虽然我希望在不久的将来会有更优雅的方式。然后,我将collectionView包装在根视图中,并在此视图中放置了activityIndi​​cator。它被证明是经典的方法,就像一个魅力。