UICollectionView嵌入在UINavigationController中,但UICollectionViewCell框架错误

时间:2015-05-11 18:32:27

标签: ios objective-c uicollectionview uicollectionviewcell uicollectionviewlayout

我有一个UINavigationController来控制两个ViewControllers,VC1和VC2。

图为VC2。并且有一个UICollectionView作为VC2.view的子视图,也有一个UICollectionCell嵌入在UICollectionView中,如下所示。

但是当我从VC1推送到VC​​2时,UICollectionCell的帧不正确。我写的代码是:

   //VC2.m
   UICollectionViewFlowLayout *l = [[UICollectionViewFlowLayout alloc]init];
   l.itemSize = CGSizeMake(self.bounds.size.width, self.bounds.size.height);
   l.minimumLineSpacing = 6.0f;
   l.sectionInset = UIEdgeInsetsMake(0, 0, 0, 6.0);
   l.scrollDirection = UICollectionViewScrollDirectionHorizontal;
   UICollectionView *parallaxCollection = [[UICollectionView alloc]initWithFrame:frame collectionViewLayout:l];
   [parallaxCollection registerClass:[CollectionCell class] forCellWithReuseIdentifier:@"CollectionCell"];
   [self addSubview:parallaxCollection];

我在initWithFrame:(CGRect)框架中得到的单元格框架是(0,-32,320,568):

//CollectionCell.m
-(id)initWithFrame:(CGRect)frame{

    self = [super initWithFrame:frame];

    }
    return self;
}

我有什么问题?

2 个答案:

答案 0 :(得分:0)

尝试在初始化后调整子视图的大小。 开发人员库说:

  

layoutSubviews - 如果您需要对子视图的布局进行更精确的控制,而不是约束或自动调整行为提供,请实现此方法。

使用

-(void)layoutSubviews

答案 1 :(得分:0)

我修复了它,只需在VC2中添加此代码:

self.automaticallyAdjustsScrollViewInsets = NO;

因为UICollectionViewCell有一个滚动视图作为子视图。