UIImageView Bild anzeigen, out of bounds in einem UICollectionViewCell sub-Klasse
Ich habe ein anpassen UICollectionViewCell zu zeigen, ein Bild und einen Namen für das Bild, Und oben auf dem Bild, es ist ein Bild 2 Pixel größer in der Breite und Höhe als die Bild. Jedoch, egal was ich mache, das Bild scheint größer zu sein, als das Bild mit dem Rahmen. Ich Tat das gleiche für die Tabelle ansehen, und es funktioniert perfekt.
Hier 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;
}
Den UICollectionViewCell hat eine Größe von 67 x 100, also im code, die bgImage soll immer 67 x 67 und sein Ursprung (0,0) und die contentImage haben soll, einen Rahmen (0,0,63,63). Durch Debuggen, es scheint korrekt zu sein. Jedoch, die conentimage immer größer als die bgImage. Die original-Größe des Bildes ist 80 x 80 obwohl. Ich habe versucht setClipToBounds,
setContentViewMode, entweder in der Zelle.ContentView oder der Bildansicht, aber keiner funktioniert.
Einen screenshot zu dem problem verbunden ist.
Jede Hilfe ist willkommen.
- Ich habe auch versucht, das layout und alle Elemente in eine Feder und in die storyboard-und die gleichen Ergebnisse erhalten.
Du musst angemeldet sein, um einen Kommentar abzugeben.
sind Sie mit 2-mal-Rahmen.Größe.Breite anstelle von Rahmen.Größe.Höhe auf der anderen
Bearbeiten, versuchen Sie dies:
in der Zelle, bei der Verwendung von initWithFrame Methoden, die self.bounds-Eigenschaft der Zelle.
wenn Sie init der Bildansicht innerhalb der Grenze verwenden CGRectInset Methode zum initialisieren der Bildansicht mit kleineren Grenzen, und legen Sie die imageviews center zu gleichen als den contentview der Zelle
UIImageView *contentImage = [[UIImageView alloc] initWithFrame:CGRectMake(2.0, 2.0, frame.size.width-4.0, frame.size.width-4.0)];
zuUIImageView *contentImage = [[UIImageView alloc] initWithFrame: CGRectInset(bgImageView.bounds, 6, 6)];
und Magie passiert. Ich brauche, um herauszufinden, was ist der Unterschied bei diesen zwei. 4.0 oder 6.0 ist egal, nur 6.0 ist das beste für meine app.Vielleicht die Antwort gefunden, indem Sie nun versuchen:
Versuchen UIViewContentModeScaleAspectFill zu UIViewContentModeScaleAspectFit.