【发布时间】:2016-12-31 04:29:43
【问题描述】:
描述:
我有一个视图控制器,其中包含一个包含 7 个单元格的集合视图。当我显示此控制器时,一切正常并且显示完美(控制器 A)。 在另一个控制器(控制器 B)上,我有一个嵌入控制器 A 和集合视图的容器视图。
问题:
当运行应用程序并进入控制器 B(嵌入控制器 A)时,控制器 A 的所有子视图看起来都不错,除了集合视图。在这种情况下,我没有看到我的 7 个单元格,而是只看到 6 个单元格,在点击其中一个单元格后,最后一个单元格出现在单元格行中,现在看起来不错(?!)。 就像集合视图正在重绘,我找不到原因或如何解决它。
感谢任何帮助。
编辑
这是我的流程布局,我从 viewDidLoad 调用:
-(void) setFlowLayout {
BOOL isIphone = (UI_USER_INTERFACE_IDIOM() != UIUserInterfaceIdiomPad);
float baseWidth = [[UIScreen mainScreen] bounds].size.width;
int width;
width = floor(baseWidth / 7.0);
float space = baseWidth - (width * 7.0f);
space /= 7.0;
UICollectionViewFlowLayout * flow = [[UICollectionViewFlowLayout alloc] init];
if(isIphone) {
flow.itemSize = CGSizeMake(width, kCellHeight);
}
else{
flow.itemSize = CGSizeMake(width, kCellSizeIpad);
}
flow.minimumInteritemSpacing = space;
flow.headerReferenceSize = CGSizeMake(_collectionDays.frame.size.width, kSpacing);
flow.footerReferenceSize = CGSizeZero;
flow.scrollDirection = UICollectionViewScrollDirectionVertical;
[_collectionDays setCollectionViewLayout:flow];
}
我也使用它来将单元格放置在集合视图的中间:
- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout insetForSectionAtIndex:(NSInteger)section{
CGFloat cellSpacing = ((UICollectionViewFlowLayout *) collectionViewLayout).minimumInteritemSpacing;
CGFloat cellWidth = ((UICollectionViewFlowLayout *) collectionViewLayout).itemSize.width;
NSInteger cellCount = [collectionView numberOfItemsInSection:section];
CGFloat inset = (collectionView.bounds.size.width - (cellCount * (cellWidth + cellSpacing))) * 0.5;
inset = MAX(inset, 0.0);
return UIEdgeInsetsMake(0.0, inset, 0.0, inset);
}
【问题讨论】:
-
分享你源代码的相关部分
-
分享一些代码和图片。
标签: ios objective-c uicollectionview uicontainerview redraw