Ich muss eine benutzerdefinierte UICollectionViewCell erstellen, um ein Bild und einen Namen für das Bild anzuzeigen, und oben auf dem Bild gibt es ein Bild, das 2 Pixel größer ist Breite und Höhe als das Bild. Aber egal, was ich mache, das Bild scheint größer als das Bild zu sein. Ich habe das gleiche für die Tischansicht getan, und es funktioniert perfekt. HierUIImageView Bild außerhalb der Grenzen in einer UICollectionViewCell Unterklasse anzeigen
ist der Code:
//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;
}
Die UICollectionViewCell hat eine Größe von 67 x 100, so in dem Code, die bgImage sollte immer sein, seine 67 x 67 und sein Ursprung (0,0) und das contentImage sollte einen Rahmen von (0,0,63,63) haben. Durch das Debuggen scheint es korrekt zu sein. Das contentimage ist jedoch immer größer als das bgImage. Die Originalgröße des Bildes beträgt 80 x 80. Ich habe versucht, setClipToBounds, setContentViewMode auf der Zelle.ContentView oder der ImageView, aber keiner funktioniert.
Ein Screenshot über das Problem ist beigefügt.
Jede Hilfe wird geschätzt.
Ich habe auch versucht, alle Elemente in einer Feder und im Storyboard Layout, die gleichen Ergebnisse zu erhalten. – Zhao