今天调试一个问题时,发现uicollectionview的item无法置顶,每次显示的时候都和上边缘有一个间距。查看了collectionFlowLayout的配置,item的间距和行距都设置了0.而且collectionview的上边缘设置的和superview的top间距是0.但是不管怎么调,还是有问题,断点调试,发现item的item.frame.origin.y = -10.觉得很奇怪,通过constraint来设置这些值,还是不起效果。怀疑是不是collectionview跟statusbar有冲突,初始化时加入代码
collectionview.contentInset=UIEdgeInsetsMake(-20, 0, 0, 0);//上移20,状态栏的高度
问题就解决了。item能贴着手机上边缘显示。
具体原因是iOS11版本的兼容性导致的。
iOS 11需要做兼容性处理,具体的一些细节参考
http://www.jianshu.com/p/370d82ba3939
另外需要注意的是:如果你用的是storyboard,vc的语言选择的是iphone8或者iphoneX,即使调试使用的的手机是10.x的系统版本,也必须对11.x做适配
storyboard采用iphone8添加视图,苹果应该是默认你使用在11.x的系统版本上