如何为下一页加载数据时,如何在集合视图的页脚中添加加载指标..?
我想在收集视图的页脚中加载指标与上图相同。 但我无法做到这一点。
那么有可能吗?否则,我必须使用tableview创建这种类型的列表视图。因为我们可以轻松地将这些内容管理到tableview中。
任何帮助都将不胜感激。
答案 0 :(得分:5)
在ViewController底部添加UIView的最简单方法是将ActivityIndicator添加到该视图并将隐藏的视图属性设置为选中,创建该视图的IBOutlet,同时从服务器设置插座加载数据&# 39; s属性hidden = NO再次加载数据后隐藏视图。 我在使用UICollectionViews或UITableView的一些应用程序中完成了同样的事情
修改强>
另一种方法是在CollectionView或tableview的页脚中添加加载指示符,然后在下面的方法中进行网络调用
对于CollectionView:
dives
对于TableView:
- (void)collectionView:(UICollectionView *)collectionView willDisplaySupplementaryView:(UICollectionReusableView *)view forElementKind:(NSString *)elementKind atIndexPath:(NSIndexPath *)indexPath;
Swift 4.2
对于CollectionView:
- (void)tableView:(UITableView *)tableView willDisplayFooterView:(UIView *)view forSection:(NSInteger)section;
对于TableView:
func collectionView(_ collectionView: UICollectionView, willDisplaySupplementaryView view: UICollectionReusableView, forElementKind elementKind: String, at indexPath: IndexPath)
答案 1 :(得分:1)
表单界面构建器
在选中Attribute inspector
的{{1}}中,选中Collection View
中的Section Footer
。因此,它会在您的集合视图中添加footerview,您可以轻松地将活动指示符拖放到此Accessories
。
希望这可以帮到你。 :)
答案 2 :(得分:1)
开源libiary MJRefresh是一个不错的选择,您可以轻松添加刷新脚。如果你想使用相同的图像动画,也许你应该使用带有gif图像的MJRefreshAutoGifFooter类。该项目包含相同的示例,您可以在设备上下载并试用它。
答案 3 :(得分:1)
我在CCBottomRefreshControl的帮助下找到了一个非常简单的解决方案 你需要像简单的UIRefreshController
那样对待它let bottomRefreshController = UIRefreshControl()
bottomRefreshController.triggerVerticalOffset = 50
bottomRefreshController.addTarget(self, action: #selector(ViewController.refreshBottom), forControlEvents: .ValueChanged)
collectionView.bottomRefreshControl = bottomRefreshController
func refreshBottom() {
//api call for loading more data
loadMoreData()
}
您认为应该停止加载的地方
collectionView.bottomRefreshControl.endRefreshing()
答案 4 :(得分:0)
The simplest solution would be adding the activity indicator to a view and add that view to UICollectionReusableView.
In collection view :
private let footerView = UIActivityIndicatorView(style: UIActivityIndicatorView.Style.white)
override func viewDidLoad() {
super.viewDidLoad()
collectionView.register(CollectionViewFooterView.self, forSupplementaryViewOfKind: UICollectionView.elementKindSectionFooter, withReuseIdentifier: "Footer")
(collectionView.collectionViewLayout as? UICollectionViewFlowLayout)?.footerReferenceSize = CGSize(width: collectionView.bounds.width, height: 50)
}
override func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView {
if kind == UICollectionView.elementKindSectionFooter {
let footer = collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: "Footer", for: indexPath)
footer.addSubview(footerView)
footerView.frame = CGRect(x: 0, y: 0, width: collectionView.bounds.width, height: 50)
return footer
}
return UICollectionReusableView()
}
customized class: add your customizations here if you need any
public class CollectionViewFooterView: UICollectionReusableView {
override init(frame: CGRect) {
super.init(frame: frame)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
just use: footerView.startAnimating() & footerView.stopAnimating() for start or stop the animation
*****希望您喜欢它。******