我有一个带有自定义UICollectionViewLayout的UICollectionView,并希望每个部分添加多个标题以显示一天中的不同小时。类似于周视图的东西,左侧有垂直的小时,但在我的情况下在顶部和水平方向。
细胞显示良好但内容很奇怪,看起来细胞被重复使用,屏幕上的5个中只有1个有内容。其他4个标题只有背景颜色,没有内容。
当我滚动时,会出现一些故障并且一次只更新一个单元格(有时是2个),并且内容可以被切换或错放一行。
以下是我在控制器中使用的代码viewDidLoad
[self.epgCollectionView registerClass:[HeaderTimeReusableView class] forSupplementaryViewOfKind:EpgKindTimeRowHeader withReuseIdentifier:HeaderTimeReuseIdentifier];
以下相同的控制器:
- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath{
UICollectionReusableView *view;
if (kind == EpgKindTimeRowHeader){
HeaderTimeReusableView *timeRowHeader = [collectionView dequeueReusableSupplementaryViewOfKind:kind withReuseIdentifier:HeaderTimeReuseIdentifier forIndexPath:indexPath];
timeRowHeader.title.text = [NSString stringWithFormat:@"s%lir%li", (long)indexPath.section, (long)indexPath.row];
view = timeRowHeader;
}
return view;
}
我想我的自定义UICollectionViewLayout很好,因为我可以在我想要的地方看到多个标题。
我的问题是:
答案 0 :(得分:0)
与往常一样,当我发布一个我找到答案的问题时......
这是我可重用视图的好代码:
- (id)initWithFrame:(CGRect)frame
{
NSLog(@"HeaderTimeReusableView.h initWithFrame");
self = [super initWithFrame:frame];
if (self) {
self.backgroundColor = [UIColor greenColor];
self.title = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 60*3, 30)];
self.title.backgroundColor = [UIColor redColor];
self.title.font = [UIFont systemFontOfSize:12.0];
self.title.text = @"3";
[self addSubview:self.title];
}
return self;
}
我之前已经按照以下方式分配了标签框架:
self.title.frame = frame;
由于某种原因,帧值不是我所期望的。使用硬编码的,它工作正常。