Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 8958157
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 15, 20262026-06-15T15:08:53+00:00 2026-06-15T15:08:53+00:00

I’m starting to experiment with custom UICollectionView layouts. I have a UICollectionView in my

  • 0

I’m starting to experiment with custom UICollectionView layouts. I have a UICollectionView in my UIViewController that conforms to the UICollectionViewDataSource and UICollectionViewFlowLayout protocols. Each cell is just an image and a label. I have a button that does this:

- (IBAction)switchLayout:(id)sender {
    PinchLayout *pinchLayout = [[PinchLayout alloc] init];
    [self.collectionView setCollectionViewLayout:pinchLayout];
}

The PinchLayout is copied straight from Apple’s sample code. When the switchLayout: method is called, my collectionView disappears. I don’t understand why. I thought it would animate to the new positions. Or in this case, not do anything but add gesture support for the new layout. Then when I hit the button again, I see a new layout where all my collection view cells are shrunken down versions of their original size. Here’s the PinchLayout.m

-(void)applyPinchToLayoutAttributes:(UICollectionViewLayoutAttributes*)layoutAttributes
{
    if ([layoutAttributes.indexPath isEqual:self.pinchedCellPath])
    {
        layoutAttributes.transform3D = CATransform3DMakeScale(self.pinchedCellScale, self.pinchedCellScale, 1.0);
        layoutAttributes.center = self.pinchedCellCenter;
        layoutAttributes.zIndex = 1;
    }
}

-(NSArray*)layoutAttributesForElementsInRect:(CGRect)rect
{
    NSArray* allAttributesInRect = [super layoutAttributesForElementsInRect:rect];

    for (UICollectionViewLayoutAttributes* cellAttributes in allAttributesInRect)
    {
        [self applyPinchToLayoutAttributes:cellAttributes];
    }

    return allAttributesInRect;
}

-(UICollectionViewLayoutAttributes*)layoutAttributesForItemAtIndexPath:(NSIndexPath *)indexPath
{
    UICollectionViewLayoutAttributes* attributes = [super layoutAttributesForItemAtIndexPath:indexPath];

    [self applyPinchToLayoutAttributes:attributes];

    return attributes;
}

-(void)setPinchedCellScale:(CGFloat)scale
{
    _pinchedCellScale = scale;
    [self invalidateLayout];
}

- (void)setPinchedCellCenter:(CGPoint)origin {
    _pinchedCellCenter = origin;
    [self invalidateLayout];
}

Any ideas? Thanks!

Edit: If I change the action method to

- (IBAction)switchLayout:(id)sender {
    PinchLayout *pinchLayout = [[PinchLayout alloc] init];
    [self.collectionView setCollectionViewLayout:pinchLayout animated:YES];
}

I watch as all my collection view cells go off the screen to the top. Not sure why they do that.

Edit 2: I logged the attributes and cellAttributes and it looks like the frames are always in the bounds of the screen so I’m still not sure why the cells go off screen to the top. Here’s the log:

2012-12-04 21:54:40.808 Animations[2079:c07] attributes: <UICollectionViewLayoutAttributes: 0x7516450> index path: (<NSIndexPath 0xe111180> 2 indexes [0, 4]); frame = (297.2 100; 50 50); 
2012-12-04 21:54:40.809 Animations[2079:c07] cellAttributes: <UICollectionViewLayoutAttributes: 0x7611df0> index path: (<NSIndexPath 0x76236e0> 2 indexes [0, 0]); frame = (50 100; 50 50); 
2012-12-04 21:54:40.812 Animations[2079:c07] cellAttributes: <UICollectionViewLayoutAttributes: 0x76235e0> index path: (<NSIndexPath 0x7623700> 2 indexes [0, 1]); frame = (111.8 100; 50 50); 
2012-12-04 21:54:40.812 Animations[2079:c07] cellAttributes: <UICollectionViewLayoutAttributes: 0x76263c0> index path: (<NSIndexPath 0x76263a0> 2 indexes [0, 2]); frame = (173.6 100; 50 50); 
2012-12-04 21:54:40.813 Animations[2079:c07] cellAttributes: <UICollectionViewLayoutAttributes: 0x7623910> index path: (<NSIndexPath 0x7626440> 2 indexes [0, 3]); frame = (235.4 100; 50 50); 
2012-12-04 21:54:40.813 Animations[2079:c07] cellAttributes: <UICollectionViewLayoutAttributes: 0x76239a0> index path: (<NSIndexPath 0x7626460> 2 indexes [0, 4]); frame = (297.2 100; 50 50); 
2012-12-04 21:54:40.813 Animations[2079:c07] cellAttributes: <UICollectionViewLayoutAttributes: 0x7623ff0> index path: (<NSIndexPath 0x7623a40> 2 indexes [0, 5]); frame = (359 100; 50 50); 
2012-12-04 21:54:40.814 Animations[2079:c07] cellAttributes: <UICollectionViewLayoutAttributes: 0x76240a0> index path: (<NSIndexPath 0x7624070> 2 indexes [0, 6]); frame = (420.8 100; 50 50); 
2012-12-04 21:54:40.853 Animations[2079:c07] cellAttributes: <UICollectionViewLayoutAttributes: 0x7624150> index path: (<NSIndexPath 0x7624120> 2 indexes [0, 7]); frame = (482.6 100; 50 50); 
2012-12-04 21:54:40.853 Animations[2079:c07] cellAttributes: <UICollectionViewLayoutAttributes: 0x7624200> index path: (<NSIndexPath 0x76241d0> 2 indexes [0, 8]); frame = (544.4 100; 50 50); 
2012-12-04 21:54:40.853 Animations[2079:c07] cellAttributes: <UICollectionViewLayoutAttributes: 0x76242d0> index path: (<NSIndexPath 0x7623a20> 2 indexes [0, 9]); frame = (606.2 100; 50 50); 
2012-12-04 21:54:40.854 Animations[2079:c07] cellAttributes: <UICollectionViewLayoutAttributes: 0x7624380> index path: (<NSIndexPath 0x7624350> 2 indexes [0, 10]); frame = (668 100; 50 50); 
2012-12-04 21:54:40.854 Animations[2079:c07] cellAttributes: <UICollectionViewLayoutAttributes: 0x7624430> index path: (<NSIndexPath 0x7624400> 2 indexes [0, 11]); frame = (729.8 100; 50 50); 
2012-12-04 21:54:40.854 Animations[2079:c07] cellAttributes: <UICollectionViewLayoutAttributes: 0x76244e0> index path: (<NSIndexPath 0x76244b0> 2 indexes [0, 11]); frame = (50 160; 50 50); 
2012-12-04 21:54:40.855 Animations[2079:c07] attributes: <UICollectionViewLayoutAttributes: 0x76427e0> index path: (<NSIndexPath 0xe1112f0> 2 indexes [0, 6]); frame = (420.8 100; 50 50); 
2012-12-04 21:54:40.855 Animations[2079:c07] attributes: <UICollectionViewLayoutAttributes: 0x7517f80> index path: (<NSIndexPath 0xe1113a0> 2 indexes [0, 7]); frame = (482.6 100; 50 50); 
2012-12-04 21:54:40.855 Animations[2079:c07] attributes: <UICollectionViewLayoutAttributes: 0x7149030> index path: (<NSIndexPath 0xe111450> 2 indexes [0, 8]); frame = (544.4 100; 50 50); 
2012-12-04 21:54:40.855 Animations[2079:c07] attributes: <UICollectionViewLayoutAttributes: 0x7149210> index path: (<NSIndexPath 0xe111230> 2 indexes [0, 9]); frame = (606.2 100; 50 50); 
2012-12-04 21:54:40.856 Animations[2079:c07] attributes: <UICollectionViewLayoutAttributes: 0x7518220> index path: (<NSIndexPath 0xe111020> 2 indexes [0, 2]); frame = (173.6 100; 50 50); 
2012-12-04 21:54:40.856 Animations[2079:c07] attributes: <UICollectionViewLayoutAttributes: 0x7518510> index path: (<NSIndexPath 0xe1110d0> 2 indexes [0, 3]); frame = (235.4 100; 50 50); 
2012-12-04 21:54:40.856 Animations[2079:c07] attributes: <UICollectionViewLayoutAttributes: 0x7518760> index path: (<NSIndexPath 0xe111180> 2 indexes [0, 4]); frame = (297.2 100; 50 50); 
2012-12-04 21:54:40.856 Animations[2079:c07] attributes: <UICollectionViewLayoutAttributes: 0x7518ac0> index path: (<NSIndexPath 0xe111250> 2 indexes [0, 5]); frame = (359 100; 50 50); 
2012-12-04 21:54:40.857 Animations[2079:c07] attributes: <UICollectionViewLayoutAttributes: 0x7642bf0> index path: (<NSIndexPath 0xe110e00> 2 indexes [0, 0]); frame = (50 100; 50 50); 
2012-12-04 21:54:40.857 Animations[2079:c07] attributes: <UICollectionViewLayoutAttributes: 0x7518d40> index path: (<NSIndexPath 0xe110f80> 2 indexes [0, 1]); frame = (111.8 100; 50 50); 
2012-12-04 21:54:40.857 Animations[2079:c07] attributes: <UICollectionViewLayoutAttributes: 0xe111600> index path: (<NSIndexPath 0xe1115d0> 2 indexes [0, 10]); frame = (668 100; 50 50); 
2012-12-04 21:54:40.858 Animations[2079:c07] attributes: <UICollectionViewLayoutAttributes: 0x7642dd0> index path: (<NSIndexPath 0xe111680> 2 indexes [0, 11]); frame = (50 160; 50 50); 
2012-12-04 21:54:41.161 Animations[2079:c07] cellAttributes: <UICollectionViewLayoutAttributes: 0x76240a0> index path: (<NSIndexPath 0x7643bf0> 2 indexes [0, 0]); frame = (50 100; 50 50); 
2012-12-04 21:54:41.162 Animations[2079:c07] cellAttributes: <UICollectionViewLayoutAttributes: 0x7623ff0> index path: (<NSIndexPath 0x7644e90> 2 indexes [0, 1]); frame = (111.8 100; 50 50); 
2012-12-04 21:54:41.162 Animations[2079:c07] cellAttributes: <UICollectionViewLayoutAttributes: 0x76239a0> index path: (<NSIndexPath 0x7645310> 2 indexes [0, 2]); frame = (173.6 100; 50 50); 
2012-12-04 21:54:41.162 Animations[2079:c07] cellAttributes: <UICollectionViewLayoutAttributes: 0x7623910> index path: (<NSIndexPath 0x7642bb0> 2 indexes [0, 3]); frame = (235.4 100; 50 50); 
2012-12-04 21:54:41.163 Animations[2079:c07] cellAttributes: <UICollectionViewLayoutAttributes: 0x76263c0> index path: (<NSIndexPath 0x761ab30> 2 indexes [0, 4]); frame = (297.2 100; 50 50); 
2012-12-04 21:54:41.163 Animations[2079:c07] cellAttributes: <UICollectionViewLayoutAttributes: 0x76235e0> index path: (<NSIndexPath 0x7642170> 2 indexes [0, 5]); frame = (359 100; 50 50); 
2012-12-04 21:54:41.163 Animations[2079:c07] cellAttributes: <UICollectionViewLayoutAttributes: 0x7611df0> index path: (<NSIndexPath 0x7642190> 2 indexes [0, 6]); frame = (420.8 100; 50 50); 
2012-12-04 21:54:41.163 Animations[2079:c07] cellAttributes: <UICollectionViewLayoutAttributes: 0x7642070> index path: (<NSIndexPath 0x7642230> 2 indexes [0, 7]); frame = (482.6 100; 50 50); 
2012-12-04 21:54:41.164 Animations[2079:c07] cellAttributes: <UICollectionViewLayoutAttributes: 0x7642ea0> index path: (<NSIndexPath 0x76422f0> 2 indexes [0, 8]); frame = (544.4 100; 50 50); 
2012-12-04 21:54:41.164 Animations[2079:c07] cellAttributes: <UICollectionViewLayoutAttributes: 0x7645d00> index path: (<NSIndexPath 0x7641d30> 2 indexes [0, 9]); frame = (606.2 100; 50 50); 
2012-12-04 21:54:41.164 Animations[2079:c07] cellAttributes: <UICollectionViewLayoutAttributes: 0x76469b0> index path: (<NSIndexPath 0x7642470> 2 indexes [0, 10]); frame = (668 100; 50 50); 
2012-12-04 21:54:41.164 Animations[2079:c07] cellAttributes: <UICollectionViewLayoutAttributes: 0x7646cb0> index path: (<NSIndexPath 0x7642490> 2 indexes [0, 11]); frame = (729.8 100; 50 50); 
2012-12-04 21:54:41.165 Animations[2079:c07] cellAttributes: <UICollectionViewLayoutAttributes: 0x76470b0> index path: (<NSIndexPath 0x7646d30> 2 indexes [0, 11]); frame = (50 160; 50 50); 
2012-12-04 21:54:41.165 Animations[2079:c07] cellAttributes: <UICollectionViewLayoutAttributes: 0x7517e40> index path: (<NSIndexPath 0x7517e10> 2 indexes [0, 0]); frame = (50 100; 50 50); 
2012-12-04 21:54:41.165 Animations[2079:c07] cellAttributes: <UICollectionViewLayoutAttributes: 0x7517f00> index path: (<NSIndexPath 0x7517ed0> 2 indexes [0, 1]); frame = (111.8 100; 50 50); 
2012-12-04 21:54:41.166 Animations[2079:c07] cellAttributes: <UICollectionViewLayoutAttributes: 0x7517fb0> index path: (<NSIndexPath 0x7517f80> 2 indexes [0, 2]); frame = (173.6 100; 50 50); 
2012-12-04 21:54:41.166 Animations[2079:c07] cellAttributes: <UICollectionViewLayoutAttributes: 0x7518060> index path: (<NSIndexPath 0x7518030> 2 indexes [0, 3]); frame = (235.4 100; 50 50); 
2012-12-04 21:54:41.166 Animations[2079:c07] cellAttributes: <UICollectionViewLayoutAttributes: 0x7518110> index path: (<NSIndexPath 0x75180e0> 2 indexes [0, 4]); frame = (297.2 100; 50 50); 
2012-12-04 21:54:41.166 Animations[2079:c07] cellAttributes: <UICollectionViewLayoutAttributes: 0x75181d0> index path: (<NSIndexPath 0x75181b0> 2 indexes [0, 5]); frame = (359 100; 50 50); 
2012-12-04 21:54:41.167 Animations[2079:c07] cellAttributes: <UICollectionViewLayoutAttributes: 0x7518280> index path: (<NSIndexPath 0x7518250> 2 indexes [0, 6]); frame = (420.8 100; 50 50); 
2012-12-04 21:54:41.167 Animations[2079:c07] cellAttributes: <UICollectionViewLayoutAttributes: 0x7518330> index path: (<NSIndexPath 0x7518300> 2 indexes [0, 7]); frame = (482.6 100; 50 50); 
2012-12-04 21:54:41.167 Animations[2079:c07] cellAttributes: <UICollectionViewLayoutAttributes: 0x75183e0> index path: (<NSIndexPath 0x75183b0> 2 indexes [0, 8]); frame = (544.4 100; 50 50); 
2012-12-04 21:54:41.167 Animations[2079:c07] cellAttributes: <UICollectionViewLayoutAttributes: 0x75184b0> index path: (<NSIndexPath 0x7518190> 2 indexes [0, 9]); frame = (606.2 100; 50 50); 
2012-12-04 21:54:41.168 Animations[2079:c07] cellAttributes: <UICollectionViewLayoutAttributes: 0x7518560> index path: (<NSIndexPath 0x7518530> 2 indexes [0, 10]); frame = (668 100; 50 50); 
2012-12-04 21:54:41.168 Animations[2079:c07] cellAttributes: <UICollectionViewLayoutAttributes: 0x7518610> index path: (<NSIndexPath 0x75185e0> 2 indexes [0, 11]); frame = (729.8 100; 50 50); 
2012-12-04 21:54:41.168 Animations[2079:c07] cellAttributes: <UICollectionViewLayoutAttributes: 0x75186c0> index path: (<NSIndexPath 0x7518690> 2 indexes [0, 11]); frame = (50 160; 50 50); 
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-15T15:08:54+00:00Added an answer on June 15, 2026 at 3:08 pm

    I have this problem in my project and, as far as I can tell, it is a bug in UICollectionView where the contentOffset inexplicably changes after a call to setCollectionViewLayout. Since you don’t need to animate the transition, I think you can simply set the contentOffset back to its original value immediately after calling setCollectionViewLayout. I’ve tested this in my project and it worked. With the animated:YES flag, however, the cells move in a jerky motion before coming to rest in the correct position.

    For your project, I would try something like this:

    - (IBAction)switchLayout:(id)sender {
        CGPoint originalContentOffset = self.collectionView.contentOffset;
        PinchLayout *pinchLayout = [[PinchLayout alloc] init];
        [self.collectionView setCollectionViewLayout:pinchLayout animated:NO];
        self.collectionView.contentOffset = originalContentOffset;
    }
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I have a string like this: La Torre Eiffel paragonata all&#8217;Everest What PHP function
I have a small JavaScript validation script that validates inputs based on Regex. I
I have a French site that I want to parse, but am running into
I am doing a simple coin flipping experiment for class that involves flipping a
I'm parsing an RSS feed that has an &#8217; in it. SimpleXML turns this
I have a .ini file as follows: [playlist] numberofentries=2 File1=http://87.230.82.17:80 Title1=(#1 - 365/1400) Example
link Im having trouble converting the html entites into html characters, (&# 8217;) i
That's pretty much it. I'm using Nokogiri to scrape a web page what has
I have just tried to save a simple *.rtf file with some websites and
this is what i have right now Drawing an RSS feed into the php,

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.