I want to set prototype-cell and imageView to a new width and height, but this does not work for imageView.
How to resize image according to cell size?
I have a new one CollectionViewfrom scratch. At IB, I added ImageViewa prototype cell with a tag of 100.
The cell size changes in the code through collectionView:layout:sizeForItemAtIndexPath:, which works fine. Subsequently, I adjust the frame of the image according to the frame of the cell. The magazine shows that this works, but on the simulator the image size does not change!
IB and the result in the simulator

Magazine
[collectionView:layout:sizeForItemAtIndexPath:] [Line 78] SETTING SIZE For Cell 0, width: 104.000000
[collectionView:layout:sizeForItemAtIndexPath:] [Line 78] SETTING SIZE For Cell 1, width: 104.000000
[collectionView:layout:sizeForItemAtIndexPath:] [Line 78] SETTING SIZE For Cell 2, width: 104.000000
[collectionView:layout:sizeForItemAtIndexPath:] [Line 78] SETTING SIZE For Cell 3, width: 104.000000
[collectionView:layout:sizeForItemAtIndexPath:] [Line 78] SETTING SIZE For Cell 4, width: 104.000000
[collectionView:layout:sizeForItemAtIndexPath:] [Line 78] SETTING SIZE For Cell 5, width: 104.000000
[collectionView:layout:sizeForItemAtIndexPath:] [Line 78] SETTING SIZE For Cell 6, width: 104.000000
[collectionView:layout:sizeForItemAtIndexPath:] [Line 78] SETTING SIZE For Cell 7, width: 104.000000
[collectionView:layout:sizeForItemAtIndexPath:] [Line 78] SETTING SIZE For Cell 8, width: 104.000000
[collectionView:cellForItemAtIndexPath:] [Line 52] Entering Cell: 0
[collectionView:cellForItemAtIndexPath:] [Line 60] width: 50.000000
[collectionView:cellForItemAtIndexPath:] [Line 61] height: 50.000000
[collectionView:cellForItemAtIndexPath:] [Line 64] new width: 104.000000
[collectionView:cellForItemAtIndexPath:] [Line 67] imageView width: 104.000000
[collectionView:cellForItemAtIndexPath:] [Line 68] cell width: 104.000000
[collectionView:cellForItemAtIndexPath:] [Line 52] Entering Cell: 1
[collectionView:cellForItemAtIndexPath:] [Line 60] width: 50.000000
[collectionView:cellForItemAtIndexPath:] [Line 61] height: 50.000000
[collectionView:cellForItemAtIndexPath:] [Line 64] new width: 104.000000
[collectionView:cellForItemAtIndexPath:] [Line 67] imageView width: 104.000000
[collectionView:cellForItemAtIndexPath:] [Line 68] cell width: 104.000000
[... and so on ...]
[collectionView:cellForItemAtIndexPath:] [Line 52] Entering Cell: 8
[collectionView:cellForItemAtIndexPath:] [Line 60] width: 50.000000
[collectionView:cellForItemAtIndexPath:] [Line 61] height: 50.000000
[collectionView:cellForItemAtIndexPath:] [Line 64] new width: 104.000000
[collectionView:cellForItemAtIndexPath:] [Line 67] imageView width: 104.000000
[collectionView:cellForItemAtIndexPath:] [Line 68] cell width: 104.000000
CollectionViewController.h
#import <UIKit/UIKit.h>
@interface CollectionViewController : UICollectionViewController
@end
CollectionViewController.m
#import "CollectionViewController.h"
@interface CollectionViewController ()
@end
@implementation CollectionViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
self.collectionView.backgroundColor = [UIColor purpleColor];
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
}
#pragma mark - Collection view
-(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView
{
return 1;
}
-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
return 9;
}
-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
DLog(@"Entering Cell: %ld", (long)indexPath.item);
UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"cell" forIndexPath:indexPath];
cell.backgroundColor = [UIColor redColor];
UIImageView *imageView = (UIImageView *)[cell viewWithTag:100];
CGRect frame = [imageView frame];
DLog(@"\t\twidth: %f", frame.size.width);
DLog(@"\t\theight: %f", frame.size.height);
frame.size.width = 104;
DLog(@"\t\tnew width: %f", frame.size.width);
[imageView setFrame:frame];
DLog(@"\t\timageView width: %f", imageView.frame.size.width);
DLog(@"\t\tcell width: %f", cell.frame.size.width);
imageView.image = [UIImage imageNamed:@"foo.jpg"];
return cell;
}
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
CGSize mElementSize = CGSizeMake(104, 104);
DLog(@"SETTING SIZE For Cell %d, width: %f", indexPath.row, mElementSize.width);
return mElementSize;
}
@end