UICollectionReusableView中的标签仅在偶数索引中显示

时间:2014-03-16 16:57:15

标签: ios iphone objective-c ios7

我遇到了UICollectionReusableView的一个非常奇怪的问题。我的页脚显示正确,但问题出在我的标题上。

我的标头是UICollectionReusableView的子类,包含:

  • 左侧的UILabel
  • 右侧的UILabel

两个标签都以相同的方式初始化,并且在正确调用的initWithFrame方法中具有非常相似的属性。

以下是一个示例代码部分:

  - (id)initWithFrame:(CGRect)frame
{
    if((self = [super initWithFrame:frame]))
    {
        self.backgroundColor = [UIColor whiteColor];

        titleLabel = [[UILabel alloc] initWithFrame:CGRectInset(frame, 10, 0)];
        titleLabel.font = [UIFont boldSystemFontOfSize:24];
        titleLabel.textColor = [UIColor blackColor];
        titleLabel.backgroundColor = [UIColor clearColor];
        [self addSubview:titleLabel];

        dotCountLabel = [[UILabel alloc] initWithFrame:CGRectMake(2 * frame.size.width / 3 - 5, 8, frame.size.width / 3, frame.size.height)];
        dotCountLabel.textAlignment = NSTextAlignmentRight;
        dotCountLabel.textColor = [UIColor blackColor];
        dotCountLabel.backgroundColor = [UIColor clearColor];
        [self addSubview:dotCountLabel];
    }

    return self;
}

显示第二个标签没有任何问题,但奇数索引部分中的第一个标签显示在下一部分的标签顶部。对于任何希望了解如何创建这些视图的视图:

    SaveHeader *header = (SaveHeader *)[collectionView dequeueReusableSupplementaryViewOfKind:kind withReuseIdentifier:@"saveHeader" forIndexPath:indexPath];
    Pattern *pattern = [saveModel.savedPatterns objectAtIndex:indexPath.section];
    header.titleLabel.text = pattern.title;
    header.dotCountLabel.text = [NSString stringWithFormat:@"%i dots", pattern.dotCount];
    return header;

我以前曾经使用过很多次,但我从来没有碰到过这样的事情。任何人都知道为什么会发生这种情况以及如何解决这个问题?另请注意,我已通过它运行调试器,数据对象返回正确的数据。我使用的是iOS 7.1。

1 个答案:

答案 0 :(得分:1)

在initWithFrame调用之前,将您要初始化的CGRect存储到变量中并进行检查。仔细观察价值观。你可能会在那里发现你的错误。祝你好运!