0

UICollectionViewCell当视图以这样的方法加载时,我正在创建一些's:

- (void)cachePageCells
{
    if(!_cellCache)
        _cellCache = [NSMutableArray arrayWithCapacity:[self collectionView:self.collectionView numberOfItemsInSection:0]];

    [pages enumerateObjectsWithOptions:0 usingBlock:^(MMGPage *obj, NSUInteger idx, BOOL *stop) {
        NSIndexPath *indexPath = [NSIndexPath indexPathForItem:idx inSection:0];
        MMGCell *cell = [self.collectionView dequeueReusableCellWithReuseIdentifier:kCELL forIndexPath:indexPath];

        UIView *view = obj.view;
        [cell.contentView addSubview:pageview];

        [_cellCache addObject:cell];
    }];
}

这将创建cell原点为 (0, -10) 的 a,在调试器中打印出该对象显示如下:

(lldb) po cell
<MMGIssuePageCell: 0x156f4df0; baseClass = UICollectionViewCell; frame = (0 -10; 768 1024); clipsToBounds = YES; opaque = NO; layer = <CALayer: 0x156f4e80>>

如果在-collectionView:cellForItemAtIndexPath:方法中使用相同的代码,它会创建一个正确原点为 (0, 0) 的单元格。

如果我通过重置框架来纠正偏移量,请使用以下内容:

cell.frame = CGRectMake(0, 0, cell.frame.size.width, cell.frame.size.height);

它破坏了集合视图并且单元格跳来跳去。

顺便说一下,bounds单元格的 是 (0 0; 768 1024)。

这是在下的 iPad 上运行的。

4

0 回答 0