Ich habe eine harte Zeit herauszufinden, warum cell.imageview
Eigenschaft zeigt mich nicht image
unten. UIImage
ist nicht Null, Zellen werden erstellt, wenn ich der Zelle einen Hintergrund zuweisen, wird angezeigt, dass ich collectionview
und meine Zellen richtig erstellt habe. Ich programmiere programmatisch meine collectionview
und verwende keine IB oder interface builder
. Ich habe das schon oft gemacht, aber ich kratze mich wirklich mit dem Kopf.Imageview wird nicht in einer programmgesteuerten CollectionView angezeigt
Vielen Dank im Voraus.
@interface MainViewController : UIViewController
@property(strong, nonatomic) UICollectionView *collectionView;
@end
@interface MainViewController()<
UICollectionViewDataSource, UICollectionViewDelegate,
UICollectionViewDelegateFlowLayout, UIGestureRecognizerDelegate>
@property(nonatomic, strong) MHTransitionShowDetail *interactivePushTransition;
@property(nonatomic) CGPoint lastPoint;
@property(nonatomic) CGFloat startScale;
@property(strong, nonatomic) NSMutableArray *carImages;
@end
@implementation MainViewController
- (instancetype)init {
self = [super init];
if (self) {
}
return self;
}
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
_carImages = [@[
@"chevy_small",
@"mini_small",
@"rover_small",
@"smart_small",
@"highlander_small",
@"venza_small",
@"volvo_small",
@"vw_small",
@"ford_small",
@"nissan_small"
] mutableCopy];
self.view = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
UICollectionViewFlowLayout *layout =
[[UICollectionViewFlowLayout alloc] init];
layout.itemSize = CGSizeMake(106, 106);
layout.minimumLineSpacing = 1.0;
layout.minimumInteritemSpacing = 1.0;
self.collectionView = [[UICollectionView alloc] initWithFrame:self.view.frame
collectionViewLayout:layout];
[self.collectionView setDataSource:self];
[self.collectionView setDelegate:self];
self.collectionView.alwaysBounceVertical = YES;
[self.collectionView setContentInset:UIEdgeInsetsMake(20, 10, 10, 10)];
[self.collectionView registerClass:[IKGCollectionViewCell class]
forCellWithReuseIdentifier:@"myCell"];
self.collectionView.backgroundColor = [UIColor whiteColor];
[self.view addSubview:self.collectionView];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
#pragma CollectionView & FlowLayout methods
- (CGSize)collectionView:(UICollectionView *)collectionView
layout:(UICollectionViewLayout *)collectionViewLayout
sizeForItemAtIndexPath:(NSIndexPath *)indexPath {
return CGSizeMake(120, 120);
}
- (NSInteger)collectionView:(UICollectionView *)collectionView
numberOfItemsInSection:(NSInteger)section {
return self.carImages.count;
}
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView
cellForItemAtIndexPath:(NSIndexPath *)indexPath {
IKGCollectionViewCell *cell =
[collectionView dequeueReusableCellWithReuseIdentifier:@"myCell"
forIndexPath:indexPath];
long row = [indexPath row];
UIImage *image = [UIImage imageNamed:self.carImages[row]];
cell.imageView.userInteractionEnabled = YES;
cell.imageView.image = image;
NSLog(@"cell.image view %@", image);
// [self makeCell:(IKGCollectionViewCell *)cell atIndexPath:indexPath];
return cell;
}
}
@end
@interface IKGCollectionViewCell : UICollectionViewCell
@property(nonatomic, strong) UIImageView *imageView;
@end
@implementation IKGCollectionViewCell
- (id)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
self.imageView = [[UIImageView alloc] initWithFrame:self.bounds];
NSLog(@"self.bounds is %@", NSStringFromCGRect(self.bounds));
}
return self;
}
- (void)layoutSubviews {
[super layoutSubviews];
self.imageView.frame = self.contentView.bounds;
}
@end