项目中使用collectionView纯代码frame布局实现一个简易的segment时,遇见了reloadData后页面布局未刷新问题。
问题虽小,但总会忽略,因此记录
在初次页面实现条数为2时显示正常
条数2
但在切换为条数1的数据时cell的尺寸未刷新
条数1
打断点时无论numberOfItemsInSection
,cellForItemAtIndexPath
还是sizeForItemAtIndexPath
中的所有数据都显示正常
后经测试为cell中布局相关问题,因为内容简易因此没使用masonry
方法,布局在init
中仅使用纯代码frame
方式实现一次,collectionView在reload后layout
方法无法更新页面布局所造成的
因此将布局在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
也可实现刷新效果
网友评论