在加载 collection 视图时隐藏 header
hide header while collection view is loading
我正在使用 NVActivityIndicatorView
加载动画。
我有这些功能来添加和删除 activity 指标。
func addActivityIndicator() {}
func startActivityIndicatorView() {}
func stopActivityIndicatorView() {}
我在
中实现了 header
override func collectionView(collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, atIndexPath indexPath: NSIndexPath) -> UICollectionReusableView {
let headerView = ...
return headerView
}
我的问题是 header 在加载 collectionView 时可见。我想在 collectionView
加载时隐藏它。
您可能在指示器动画时执行一些异步操作,因此您应该通过调用 reloadData
让 collection 视图知道操作已完成,因此它会 re-layout它的 UI 元素包括 headers 通过 viewForSupplementaryElementOfKind
:
首先,如果指标在屏幕上,您需要从 collectionView:layout:referenceSizeForHeaderInSection
return CGSize.zero
,这样 header 就不会被填充:
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForHeaderInSection section: Int) -> CGSize {
if indicatorView.isAnimating {
return CGSize.zero
} else {
return CGSize(width: collectionView.frame.width, height: 50)
}
}
那么无论你把activity指标隐藏在哪里(可能在异步操作的完成块中),你应该调用collectionView.reloadData
所以viewForSupplementaryElementOfKind
将再次调用:
// operation is done, refreshing the content..
self.stopActivityIndicatorView()
self.collectionView.reloadData()
...
我正在使用 NVActivityIndicatorView
加载动画。
我有这些功能来添加和删除 activity 指标。
func addActivityIndicator() {}
func startActivityIndicatorView() {}
func stopActivityIndicatorView() {}
我在
中实现了 headeroverride func collectionView(collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, atIndexPath indexPath: NSIndexPath) -> UICollectionReusableView {
let headerView = ...
return headerView
}
我的问题是 header 在加载 collectionView 时可见。我想在 collectionView
加载时隐藏它。
您可能在指示器动画时执行一些异步操作,因此您应该通过调用 reloadData
让 collection 视图知道操作已完成,因此它会 re-layout它的 UI 元素包括 headers 通过 viewForSupplementaryElementOfKind
:
首先,如果指标在屏幕上,您需要从 collectionView:layout:referenceSizeForHeaderInSection
return CGSize.zero
,这样 header 就不会被填充:
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForHeaderInSection section: Int) -> CGSize {
if indicatorView.isAnimating {
return CGSize.zero
} else {
return CGSize(width: collectionView.frame.width, height: 50)
}
}
那么无论你把activity指标隐藏在哪里(可能在异步操作的完成块中),你应该调用collectionView.reloadData
所以viewForSupplementaryElementOfKind
将再次调用:
// operation is done, refreshing the content..
self.stopActivityIndicatorView()
self.collectionView.reloadData()
...