Devo creare un UICollectionViewCell personalizzato per mostrare un'immagine e un nome per l'immagine E, sopra l'immagine, c'è un'immagine di fotogramma di 2 pixel più grande in larghezza e altezza rispetto all'immagine. Tuttavia, qualunque cosa faccia, l'immagine sembra essere più grande dell'immagine del frame. Ho fatto la stessa cosa per la vista del tavolo, e funziona perfettamente.UIImageView mostra l'immagine senza limiti in una sottoclasse UICollectionViewCell
Ecco il codice:
//GridCell.h
@interface GridCell : UICollectionViewCell
@property(nonatomic, strong) UILabel *lblName;
@property(nonatomic, strong) UIImageView *image;
@end
//GridCell.m
#import "GridCell.h"
@implementation GridCell
@synthesize image, lblName;
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code
UIImage *bg = [UIImage imageNamed:@"borderUIimgLg.png"];
UIImageView *bgImage = [[UIImageView alloc] initWithFrame:CGRectMake(0.0, 0.0, frame.size.width, frame.size.width)];
[bgImage setImage:bg];
[bgImage setContentMode:UIViewContentModeScaleAspectFill];
NSLog(@"BG Image size %f, %f", bgImage.frame.size.width, bgImage.frame.size.height);
UIImageView *contentImage = [[UIImageView alloc] initWithFrame:CGRectMake(2.0, 2.0, frame.size.width-4.0, frame.size.width-4.0)];
[contentImage setContentMode:UIViewContentModeScaleAspectFill];
[contentImage setClipsToBounds:YES];
self.image = contentImage;
[self.contentView addSubview:self.image];
[self.contentView addSubview:bgImage];
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(2.0, frame.size.width, frame.size.width - 4.0, 21.0)];
[label setFont:[UIFont fontWithName:@"HelveticaNeue-Bold" size:11.0]];
[label setTextAlignment:NSTextAlignmentCenter];
[label setBackgroundColor:[UIColor clearColor]];
self.lblName = label;
[self.contentView addSubview:self.lblName];
}
return self;
}
L'UICollectionViewCell ha una dimensione di 67 x 100, quindi nel codice, il bgImage dovrebbe essere sempre essere 67 x 67 e la sua origine è (0,0) e il contentImage dovrebbe avere un frame di (0,0,63,63). Con il debug, sembra corretto. Tuttavia, il conentimage è sempre più grande di bgImage. La dimensione originale dell'immagine è 80 x 80 però. Ho provato setClipToBounds, setContentViewMode su cell.ContentView o imageView, ma nessuno funziona.
Uno screenshot sul problema è allegato.
Qualsiasi aiuto è apprezzato.
Ho anche provato a impaginare tutti gli elementi in un pennino e nello storyboard, ottenere gli stessi risultati. – Zhao