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) の が作成され、デバッガーでオブジェクトを出力すると、次のようになります。

(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