iOS 11 UI Collection Section Header 裁剪滚动指示器
Posted
技术标签:
【中文标题】iOS 11 UI Collection Section Header 裁剪滚动指示器【英文标题】:iOS11 UICollectionSectionHeader clipping scroll indicator 【发布时间】:2017-10-14 18:27:01 【问题描述】:我创建了一个单视图项目并添加了一个collectionView。我注册了一个简单的 UICollectionReusableView 子类
final class TestReusableView: UICollectionReusableView
override init(frame: CGRect)
super.init(frame: frame)
backgroundColor = UIColor.red
...
设置数据源并委托给自己
extension ViewController: UICollectionViewDataSource
func numberOfSections(in collectionView: UICollectionView) -> Int
return 1
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int
return 100
func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView
let headerView = collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: kHeader, for: indexPath)
return headerView
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath)
cell.backgroundColor = UIColor.blue
return cell
extension ViewController: UICollectionViewDelegateFlowLayout
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForHeaderInSection section: Int) -> CGSize
return CGSize(width: collectionView.bounds.width, height: 88)
结果是节标题似乎位于垂直滚动指示器上方。但是,如果我在 10.3.1 模拟器上运行该应用程序,则行为会按我的预期工作。
【问题讨论】:
我在 ios 11.0 中也遇到了类似的问题,其中节标题位于所有视图之上。在 10.3 中一切正常。 绝对看起来像 iOS 11.0+ 问题。我也遇到了。我能找到的最近的雷达是:openradar.me/34308893 【参考方案1】:这对我有用:
- (void)collectionView:(UICollectionView *)collectionView willDisplaySupplementaryView:(UICollectionReusableView *)view forElementKind:(NSString *)elementKind atIndexPath:(NSIndexPath *)indexPath
if (SystemVersionGraterOrEqual(11))
if ([elementKind isEqualToString:UICollectionElementKindSectionHeader])
view.layer.zPosition = 0;
【讨论】:
很好,虽然整个问题看起来像一个错误,因为不应该使用 z 位置。【参考方案2】:我无法尝试,但您可以尝试将其添加到您的viewDidLoad()
:
let flow = collectionView.collectionViewLayout as! UICollectionViewFlowLayout
flow.sectionHeadersPinToVisibleBounds = true
【讨论】:
这只是将节标题固定到 collectionView 的顶部。有问题的问题是节标题正在剪裁垂直滚动指示器【参考方案3】:好吧,即使我在我的应用程序中遇到了同样的问题,它也计划在 2 周内发布。我没有时间研究为什么这仅在 iOS 11 中失败。因此,我所做的快速解决方法是将 headerView 的用法替换为 footerView,因为 footerView 没有这个问题。
【讨论】:
以上是关于iOS 11 UI Collection Section Header 裁剪滚动指示器的主要内容,如果未能解决你的问题,请参考以下文章
NX二次开发-UFUN点收集器UF_UI_select_point_collection
如何解决 iOS 10 和 iOS 11 之间的这种 UI 差异
ISupportIncrementalLoading Collection - 在 LoadingMoreItems 正在进行时通知 UI