iOS UICollectionView 代码布局reloadData后布局未刷新问题

·  阅读 1048

项目中使用collectionView纯代码frame布局实现一个简易的segment时,遇见了reloadData后页面布局未刷新问题。 问题虽小,但总会忽略,因此记录

在初次页面实现条数为2时显示正常 条数2

但在切换为条数1的数据时cell的尺寸未刷新 条数1

打断点时无论numberOfItemsInSectioncellForItemAtIndexPath 还是sizeForItemAtIndexPath中的所有数据都显示正常

后经测试为cell中布局相关问题,因为内容简易因此没使用masonry方法,布局在init中仅使用纯代码frame方式实现一次,collectionView在reloadlayout方法无法更新页面布局所造成的

因此将布局在layoutSubviews中实现或使用masonry实现布局即可解决此问题

- (void)layoutSubviews{
    [super layoutSubviews];
    _itemBtn.func_frame(self.bounds);
    _itemSeg.func_frame(CGRectMake(self.width-0.25, 0, 0.5, self.width));
}
复制代码

切换正常

ps:后看其他相关问题并验证后reloadSections:[NSIndexSet indexSetWithIndex: ]方法也可解决相关问题 精确的reload item | section 会有效刷新指定的内容 或直接调用setNeedsLayout 也可实现刷新效果

分类:
iOS
标签: