UICollectionView fails to honour zPosition and zIndex - iOS 11 only

家住魔仙堡 提交于 2019-12-04 03:24:57

问题


I try to find a workaround for this radar: http://www.openradar.me/34308893

Currently in my - (void)applyLayoutAttributes:(UICollectionViewLayoutAttributes *)layoutAttributes I'm doing the following:

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, NSEC_PER_MSEC * 50), dispatch_get_main_queue(), ^{
    self.layer.zPosition = 0;
});

But no matter how many NSEC_PER_MSEC I enter it doesn't work quite right, the scrolling indicator sometimes hides behind the headers, especially when ne headers appear. Is there another/better approach?


回答1:


I had a similar problem where a header view in a UICollectionView was getting rendered above another view that had it's zIndex set > 0 in a custom UICollectionViewFlowLayout.

The answer for me was to set the header view layer's zPosition in willDisplaySupplementaryView:

override public func collectionView(_ collectionView: UICollectionView,
                                    willDisplaySupplementaryView view: UICollectionReusableView,
                                    forElementKind elementKind: String,
                                    at indexPath: IndexPath) {
    if elementKind == UICollectionView.elementKindSectionHeader && type(of: view) == CollectionViewSectionHeaderView.self {
      view.layer.zPosition = -1
    }
  }

iOS11 doesn't seem to honor z-indexes in UICollectionViewFlowLayout subclasses.



来源:https://stackoverflow.com/questions/46903209/uicollectionview-fails-to-honour-zposition-and-zindex-ios-11-only

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!