Muszę utworzyć dostosowujący UICollectionViewCell, aby wyświetlić obraz i nazwę obrazu, a na górze obrazu znajduje się obraz klatki o 2 piksele większy w szerokość i wysokość niż obraz. Jednak niezależnie od tego, co robię, obraz wydaje się większy niż obraz klatki. Zrobiłem to samo dla widoku tabeli i działa idealnie.UIImageView wyświetla obraz poza zakresem w podklasie UICollectionViewCell
Oto kod:
//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;
}
UICollectionViewCell ma rozmiar 67 x 100, więc w kodzie bgImage powinien być zawsze być 67 x 67 i jego pochodzenie jest (0,0) i contentImage powinno mieć ramkę (0,0,63,63). Przez debugowanie wydaje się poprawne. Jednak conentimage zawsze większy niż bgImage. Oryginalny rozmiar obrazu to jednak 80 x 80. Próbowałem setClipToBounds, setContentViewMode na cell.ContentView lub imageView, ale żaden nie działa.
Zrzut ekranu przedstawiający problem został załączony.
Każda pomoc jest doceniana.
Próbowałem również rozmieścić wszystkie elementy w stalówce i scenorysie, uzyskać takie same wyniki. – Zhao