Tengo que crear una UICollectionViewCell personalizada para mostrar una imagen y un nombre para la imagen, y en la parte superior de la imagen hay una imagen de marco que es 2 píxeles más grande ancho y alto que la imagen. Sin embargo, no importa lo que haga, la imagen parece ser más grande que la imagen del marco. Hice lo mismo para la vista de tabla, y funciona perfecto.UIImageView muestra la imagen fuera de límites en una subclase UICollectionViewCell
Aquí está el código:
//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;
}
El UICollectionViewCell tiene un tamaño de 67 x 100, por lo que en el código, el bgImage supone que es siempre ser 67 x 67 y su origen es (0,0) y se supone que contentImage tiene un marco de (0,0,63,63). Por la depuración, parece correcto. Sin embargo, el conentimage siempre es más grande que el bgImage. Sin embargo, el tamaño original de la imagen es de 80 x 80. He intentado setClipToBounds, setContentViewMode en el cell.ContentView o el imageView, pero ninguno funciona.
Se adjunta una captura de pantalla sobre el problema.
Cualquier ayuda es apreciada.
También traté de maquetar todos los elementos en una punta y en el guión gráfico, obtengo los mismos resultados. – Zhao