UICollectionView cannot resize image in cell

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

enter image description here

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) {
        // Custom initialization
    }
    return self;
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    self.collectionView.backgroundColor = [UIColor purpleColor];
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

#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
+3
source share
1 answer

, -. . . UICollectionViewCell - (void)awakeFromNib autoresizingMask UIImageView

_imageViewForCell.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;

.

0

All Articles