2019独角兽企业重金招聘Python工程师标准>>>

iOS 11 下 UICollectionView 出现滚动条被 HeaderView 遮挡的问题

在使用了- collectionView: viewForSupplementaryElementOfKind: atIndexPath:的 UICollectionView 页面中,滑动页面的时候滚动条会被 HeaderView 遮挡。导致滚动条看起来是断断续续的。

问题页面如下图所示(查看滚动条):

以上问题具体是否与使用了 - collectionView: viewForSupplementaryElementOfKind: atIndexPath: 有关目前还不确定,待验证。

这个问题在之前的 iOS 10 上是没有的,iOS 11 新出之后才出现。经过在 stackoverflow 上查找之后找到解决办法。https://stackoverflow.com/questions/46694144/scrollbar-incorrectly-appears-underneath-uicollectionview-section-header

stackoverflow 中提供的是 swift 中的解决办法,我自己则使用的是 Objective-C。

提示:解决这个问题只是更改了继承自 UICollectionReusableView 的自定义 HeaderView 类文件,所以这里只贴该自定义 HeaderView 的代码。

先看看在修复问题之前的 CustomHeaderView 类文件代码

// CustomHeaderView.h#import <UIKit/UIKit.h>extern NSString *const CustomHeaderViewReuseIdentifier;@interface CustomHeaderView : UICollectionReusableView@property (nonatomic, strong) UILabel *titleLabel;@end// CustomHeaderView.m
#import "CustomHeaderView.h"NSString *const CustomHeaderViewReuseIdentifier = @"CustomHeaderView";@implementation CustomHeaderView- (void)layoutSubviews {[super layoutSubviews];[self createSubViews];
}- (void)createSubViews {_titleLabel = [[UILabel alloc] init];_titleLabel.textColor = [UIColor blackColor];CGFloat height = self.frame.size.height;_titleLabel.frame = CGRectMake(15, 0, 100, height);[self addSubview:_titleLabel];
}@end

当为以上代码的时候,APP 在 iOS11 上运行就会出现上图的问题。 根据 stackoverflow 的提示更改代码之后,该问题便被修复。

以下为修复之后的CustomHeaderView类文件代码

// CustomHeaderView.h#import <UIKit/UIKit.h>extern NSString *const CustomHeaderViewReuseIdentifier;#ifdef __IPHONE_11_0
@interface CustomLayer : CALayer@end
#endif@interface CustomHeaderView : UICollectionReusableView@property (nonatomic, strong) UILabel *titleLabel;@end// CustomHeaderView.m
#import "CustomHeaderView.h"NSString *const CustomHeaderViewReuseIdentifier = @"CustomHeaderView";#ifdef __IPHONE_11_0
@implementation CustomLayer- (CGFloat) zPosition {return 0;
}@end
#endif@implementation CustomHeaderView- (void)layoutSubviews {[super layoutSubviews];[self createSubViews];
}- (void)createSubViews {_titleLabel = [[UILabel alloc] init];_titleLabel.textColor = [UIColor blackColor];CGFloat height = self.frame.size.height;_titleLabel.frame = CGRectMake(15, 0, 100, height);[self addSubview:_titleLabel];
}#ifdef __IPHONE_11_0
+ (Class)layerClass {return [CustomLayer class];
}
#endif@end

以上代码相对于之前有问题的代码只是多了 #ifdef __IPHONE_11_0 ... #endif之间的内容,使用 #ifdef __IPHONE_11_0 ... #endif母的是防止更改之后的代码在 iOS 10 上出现问题,从而确保更改只是针对 iOS11 及之后的版本有效。

更改之后的效果图如下所示:

转载于:https://my.oschina.net/yitongtong/blog/1554404

iOS 11 下 UICollectionView 出现滚动条被 HeaderView 遮挡的问题相关推荐

  1. 微信小程序ios系统下viedo视频全屏无法遮挡fixed事件的解决办法

    之前博主遇到过一个巨巨巨大的坑,困扰了我很久都没有找到原因,其实现在我也没有找到具体的原因,如果有同学知道的话可以给我留言哦,先po一下具体遇到的bug 当进入全屏的时候,底部fixed固定的tab栏 ...

  2. iOS 11 安全区域适配总结

    2019独角兽企业重金招聘Python工程师标准>>> 导语:本文主要是对iOS 11下APP中tableView内容下移20pt或下移64pt的问题适配的一个总结.内容包括五个部分 ...

  3. iOS 11中tableView下移问题

    本文主要是对iOS 11下APP中tableView内容下移20pt或下移64pt的问题适配的一个总结.内容包括五个部分:问题的原因分析.adjustContentInset属性的计算方式.什么情况下 ...

  4. 要不要升级先看这篇!iOS 11 最全试玩体验

    苹果在今年的 WWDC 上,正式公布了 iOS 10.macOS High Sierra 以及 watchOS 4 等操作系统.这次 WWDC 也是猛料最多的一次,除了全新 iMac Pro 外,苹果 ...

  5. iOS 11 UICollectionView顶部出现白色间隔的问题

    iOS11 UICollectionView顶到屏幕顶端会出现一个20高度的白色间隔,是由于UICollectionView的自动调整功能为状态栏留出的位置 只需在创建UICollectionView ...

  6. uniapp+uView1.0做H5应用的时候,ios系统右侧会显示滚动条,如何隐藏ios下的滚动条

    跟目录下的App.vue文件,不能全局写css样式,因为,安卓下会有问题,所以用js动态加载css代码片段的方式 直接上代码 let platform=uni.getSystemInfoSync(). ...

  7. iOS 11 适配集锦

    安全区域的适配 用Xcode 9 创建storyboard或者xib时,最低版本支持iOS 8时会报: Safe Area Layout Guide before iOS 9.0 如图: 原因:在iO ...

  8. 适配iOS 11和iPhone X——导航栏、UITableView

    每年的WWDC大会都激动和紧张好一段时间.激动的是期待苹果的新产品带来的那些黑科技,尤其今年的iPhone10周年纪念款iPhone X.紧张的当然是iOS.Swift和Xcode的升级,又要加班了( ...

  9. ios 11及iPhone X的那些事

    前段时间苹果发布新产品,iPhone8.iPhone 8 plus.iPhoneX,同时也发布了iOS 11,之前一直吐槽Android的适配,现在也第一次体会到了面向机型适配的感受了.反正苹果开心了 ...

最新文章

  1. 【自然语言处理】N-最短路径法进行中文分词
  2. Metasploit命令info使用技巧
  3. BZOJ1036: [ZJOI2008]树的统计Count
  4. 《Android进阶之光》--多线程编程
  5. vb编程的好帮手--资源文件
  6. javascript常用判断写法
  7. leetcode中使用c++需要注意的点以及各类容器的初始化、常用成员函数
  8. Objective-C优缺点
  9. 网际控制报文协议ICMP(Internet Control Message Protocol)(详解)
  10. 星形和雪花模型_数据仓库多维数据模型设计
  11. HTML标签(持续更新)
  12. C#知识点总结系列:2、C#中IDisposable和IEnumerable、IEnumerator
  13. python commands执行不连续_[Python] 利用commands模块执行Linux shell命令
  14. mysql中to_char()和str_to_date()函数
  15. html+input+js双击,JS双击变input框批量修改内容
  16. excel基础操作(1)
  17. 【渗透测试】锐捷网络-EWEB网管系统易网关批量GetShell
  18. Linux ps命令详解,Linux查看进程
  19. Windows10下安装point-cloud-annotation-tool点云标注工具——吐血之路总结
  20. 两个umijs/max项目使用微前端简单示例

热门文章

  1. springcloud项目的启动顺序_Spring Cloud微服务项目完整示例,含注册中心,网关,断路器等等...
  2. jquery监听向上向下滑动,滑动执行操作
  3. 记录:希尔排序思路分析
  4. WordPress主题modown6.2+erphpdown11.7
  5. 个人Typech情侣主题Cupid模板
  6. Java23种设计模式之概念篇
  7. KOHA IRC 聊天室
  8. 悟透JavaScript
  9. Mycat配置文件schema.xml的详解
  10. 机器学习速成课程 | 练习 | Google Development——编程练习:(TensorFlow) Hello World