美文网首页
UICollectionView自适应注意事项

UICollectionView自适应注意事项

作者: 仗键天涯 | 来源:发表于2019-02-02 11:52 被阅读0次

今天遇到一个棘手问题:为了支持滚动tableview时隐藏navigationBar和tarBar,先修改UICollectionView的frame,使其变大,后再缩小恢复。

实践过程中发现,

UICollectionCell可以自适应大小跟随UICollectionView变化,但在跟随UICollectionView变小的时候,UICollectionView的UICollectionCell位置出现偏移了,cell.frame.orgin.y坐标没有按照预期为0,控制台出现下面的警告:

The behavior of the UICollectionViewFlowLayout is not defined because:

the item height must be less than the height of the UICollectionView minus the section insets top and bottom values, minus the content insets top and bottom values.

The relevant UICollectionViewFlowLayout instance is <UICollectionViewFlowLayout: 0x7fdfa4568ce0>, and it is attached to <UICollectionView: 0x7fdfa4932000; frame = (0 58; 375 710); clipsToBounds = YES; autoresize = W+H; gestureRecognizers = <NSArray: 0x600002b0b180>; layer = <CALayer: 0x6000025e6240>; contentOffset: {0, 0}; contentSize: {2250, 768}; adjustedContentInset: {0, 0, 83, 0}> collection view layout: <UICollectionViewFlowLayout: 0x7fdfa4568ce0>.

Make a symbolic breakpoint at UICollectionViewFlowLayoutBreakForInvalidSizes to catch this in the debugger.

在警告信息中,我们发现adjustedContentInset中的值不是我们预期的 {0, 0,0, 0},因此就出现了偏移。

要避免这个问题,可以在创建UICollectionView的时候设置其一个属性:

collectionView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;

但这个属性只支持11.0以上系统。

相关文章

网友评论

      本文标题:UICollectionView自适应注意事项

      本文链接:https://www.haomeiwen.com/subject/nfdssqtx.html