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

项目中使用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 UICollectionView 代码布局reloadData后布局未刷新问题)