【问题标题】:How to add centered UIActivityIndicator for UICollectionView when using UICollectionViewController?使用 UICollectionViewController 时如何为 UICollectionView 添加居中的 UIActivityIndi​​cator?
【发布时间】:2014-01-20 00:28:14
【问题描述】:

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

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

[self.itemsCollectionView bringSubviewToFront:self.activityIndicator];

因为collection view cell的labels、images等views放在后面,collectionView:cellForItemAtIndexPath:期间。我可以尝试在collectionView:cellForItemAtIndexPath: 中调用bringSubviewToFront: 但这将是一个错误的决定。在使用 UITableViewControllers 或 UICollectionViewControllers 时如何实现这一点的任何想法?

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

更新 iOS 似乎将 UICollectionView 包装在 UICollectionViewControllerWrapperView 中。试图在 viewWillAppear 中向这个包装视图添加活动:

[self.itemsCollectionView.superview addSubview:self.activityIndicator];

但没有运气 - 活动指示器仍在单元格下方。

【问题讨论】:

  • 如何将活动指示器放在UICollectionViewCell 的中心并在集合视图的末尾注入单元格?您可以使用insertItemsAtIndexPaths 来实现这一点。但是不要忘记在单元格上设置另一个重用标识符,这样它就不会与您的常规单元格混淆。

标签: ios objective-c uicollectionview uiactivityindicatorview


【解决方案1】:

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

【讨论】:

  • 我通常不鼓励使用 XIB 的原始 Xml。由于 XIB 的实现细节由 Apple 处理,未来的版本可能会破坏您的代码(或本例中的 GUI)。您是否尝试在 IB 中设置课程?像这样:cl.ly/image/3h2Q0f2Z0j0A
猜你喜欢
  • 2012-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-05
  • 1970-01-01
  • 2014-06-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多