Neil Faulkner
Neil Faulkner

Reputation: 524

Resize UICollectionView Height

I'm trying to resize a UICollectionView height by setting it to 0 when the view controller is loaded, then increasing its size with an animation when a button is pressed. I've tried a few different things but it doesn't change in size at all. Here's all the different things I've tried to change its height to 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;

Upvotes: 8

Views: 13723

Answers (2)

sheepgobeep
sheepgobeep

Reputation: 783

You can avoid disabling Autolayout by creating an outlet for the height constraint and then adjusting the constraint's constant in code.

Outlet

@IBOutlet weak var collectionViewVerticalConstraint: NSLayoutConstraint!

Adjustment

collectionViewVerticalConstraint.constant = 0

Upvotes: 2

Pavlina Koleva
Pavlina Koleva

Reputation: 49

If you are using Interface Builder for UICollectionView initialisation, switch off "Use Autolayout" from the File Inspector in the xib file where the your CollectionView is created. Then you can change the height with setFrame or setBounds methods.

Upvotes: 4

Related Questions