8

我试图通过在加载视图控制器时将其设置为 0 来调整 UICollectionView 的高度,然后在按下按钮时通过动画增加其大小。我尝试了一些不同的东西,但它的大小根本没有变化。这是我尝试将其高度更改为 0 的所有不同内容:

CGRect bounds = [self.collectionView bounds];
[self.collectionView setBounds:CGRectMake(bounds.origin.x,
                                          bounds.origin.y,
                                          bounds.size.width,
                                          bounds.size.height - 100)];

……

CGRect frame = [self.collectionView frame];
[self.collectionView setFrame:CGRectMake(frame.origin.x,
                               frame.origin.y,
                               frame.size.width,
                               frame.size.height - 100)];

……

CGRect frame = self.collectionView.frame;
frame.size.height -= 100;
self.collectionView.frame = frame;

……

 self.collectionView.clipsToBounds = YES;
 self.collectionView.autoresizingMask = UIViewAutoresizingFlexibleHeight;
4

2 回答 2

4

如果您使用 Interface Builder 进行 UICollectionView 初始化,请从创建 CollectionView 的 xib 文件中的文件检查器中关闭“使用自动布局”。然后您可以使用 setFrame 或 setBounds 方法更改高度。

于 2013-12-17T15:06:16.393 回答
2

您可以通过为高度约束创建一个出口然后在代码中调整约束的常量来避免禁用自动布局。

出口

@IBOutlet weak var collectionViewVerticalConstraint: NSLayoutConstraint!

调整

collectionViewVerticalConstraint.constant = 0
于 2015-08-25T21:30:22.100 回答