如何在iOS中的CollectionView的页脚中添加加载指示器

时间:2016-04-15 05:46:14

标签: ios objective-c swift uitableview uicollectionview

如何为下一页加载数据时,如何在集合视图的页脚中添加加载指标..?

enter image description here

我想在收集视图的页脚中加载指标与上图相同。 但我无法做到这一点。

那么有可能吗?否则,我必须使用tableview创建这种类型的列表视图。因为我们可以轻松地将这些内容管理到tableview中。

任何帮助都将不胜感激。

5 个答案:

答案 0 :(得分:5)

在ViewController底部添加UIView的最简单方法是将ActivityIndi​​cator添加到该视图并将隐藏的视图属性设置为选中,创建该视图的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 

*****希望您喜欢它。******