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) です。
これはios7の下の iPad で実行されています。