18

Sto provando a reimplementare lo scorrimento infinito UICollectionView visto here. Le cose che mancavano per me:Invece di UICollectionView viene visualizzato uno schermo nero

ViewController.h:

@interface ViewController : UIViewController<UICollectionViewDataSource, UICollectionViewDelegate> 

@end 

DataCell.h:

@interface DataCell : UICollectionViewCell 
@property (nonatomic, strong) UILabel *label; 
@end 

DataCell.m:

#import "DataCell.h" 

@implementation DataCell 

-(instancetype)initWithFrame:(CGRect)frame { 
    self = [super initWithFrame:frame]; 
    if(self){ 
     self.label = [[UILabel alloc] initWithFrame:self.bounds]; 
     self.autoresizesSubviews = YES; 
     self.label.autoresizingMask = (UIViewAutoresizingFlexibleWidth | 
             UIViewAutoresizingFlexibleHeight); 
     self.label.textAlignment = NSTextAlignmentCenter; 
     self.label.adjustsFontSizeToFitWidth = YES; 

     [self addSubview:self.label]; 
    } 

    return self; 
} 

@end 

CustomCollectionView.h:

@interface CustomCollectionView : UICollectionView 

@end 

Per l'intero progetto ho usato uno storyboard e un normale UIViewController. Su questo controller vista ho aggiunto uno UICollectionView in Interface Builder. Ho collegato l'uscita dalla vista di raccolta con il mio controller di visualizzazione e ho impostato l'origine dati e delegato nuovamente i metodi al mio controller di visualizzazione. Ho anche impostato la classe personalizzata di UICollectionViewCell e l'identificatore di riutilizzo in Interface Builder.

Quindi tutto dovrebbe funzionare ma ottengo solo uno schermo nero. Cosa mi manca? È possibile scaricare l'intero progetto here.

risposta

23

si sta configurando correttamente il CollectionView, solo che hai dimenticato il colore dell'etichetta :)

[self.label setTextColor:[UIColor whiteColor]]; 

enter image description here

Speranza che aiuta!

4

Ho avuto lo stesso problema. La schermata nera sembra essere un indicatore di nessun dato disponibile con la visualizzazione della collezione da visualizzare. Prova a cambiare il colore di sfondo della vista raccolta, se il colore modificato è stato visualizzato, la vista raccolta funziona. Quindi aggiungi una vista di immagini alla vista raccolta con tag (ad esempio, assegna un valore 100 con il valore di tag per la vista immagine) e con cellforItemAtIndexPath imposta le immagini sulla vista immagine. (si può farlo con cella personalizzato. Ma per ora, per ottenere il lavoro vista raccolta, l'assegnazione con tag per gli abiti ImageView migliori)

UIImageView * ImageView = (UIImageView *)[cell viewWithTag:100]; 
ImageView.image = [UIImage imageNamed:[images objectAtIndex:indexPath.row]]; 
3

È necessario impostare manualmente il colore della visualizzazione raccolta di sfondo nello storyboard.

per impostazione predefinita è nero (anche se non dimostrando che nell'editor storyboard)

enter image description here

+0

se si desidera che lo sfondo sia cl ear, devi usare 'collectionView.backgroundColor = [UIColor clearColor];' e 'collectionView.backgroundView = [[Allocazione UIView] initWithFrame: CGRectZero]; ' – Multinerd

1

In Swift,

self.label.textColor = UIColor.whiteColor() 
0
[self.collectionView registerNib:[UINib nibWithNibName:@"ProductCollectionViewCell" bundle:nil] forCellWithReuseIdentifier:@"ProductCollectionViewCell"]; 

self.collectionView.backgroundColor = [UIColor clearColor]; 
1

è successo a me che sia il CollectionView e la cella di visualizzazione della raccolta aveva sfondi trasparenti