我已经在界面构建器中设置了一个UICollectionView:

画框为320x180
像元大小为320x180
流布局单元格尺寸为320x180
插入全部为0

但是,以某种方式,当我的iniWithFrame方法被调用时,它使我身高降低了。 160!而不是180。

我的自定义单元格也是320x180;

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code
        self = [[[NSBundle mainBundle] loadNibNamed:@"FSGalleryCell" owner:self options:nil] objectAtIndex:0];
    }

    return self;
}

不仅如此,UICollectionView Y的原点比接口生成器中的原点低约50点。

我没有任何限制。我试图禁用自动版式。

另外,如果我尝试手动执行此操作:单元格内容不显示。
-(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {

    return CGSizeMake(320, 180);
}

只有当我这样离开时:
-(CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
    return self.collectionView.frame.size;
}

我希望最后一个可以正常工作,因为它是320x160。任何更大的东西都不会显示。

在iOS7中一切正常。这些问题出现在iOS6上。

感谢所有帮助!!

最佳答案

您需要设置automaticallyAdjustsScrollViewInsetsedgesForExtendedLayout来匹配您想要在iOS 6中发生的事情。

如果您希望获得与iOS 6相同的功能,而导航栏下方没有任何内容且没有自动调整插图,则可以在UIViewController中执行以下操作:

if ([self respondsToSelector:@selector(setAutomaticallyAdjustsScrollViewInsets:)]) {
  self.automaticallyAdjustsScrollViewInsets = NO;
}

if ([self respondsToSelector:@selector(setEdgesForExtendedLayout:)]) {
  self.edgesForExtendedLayout = UIExtendedEdgeLeft | UIExtendedEdgeBottom | UIExtendedEdgeRight;
}

10-07 19:51