18

Я пытаюсь переопределить инфинитивную прокрутку UICollectionView замечен here. Вещи, которые пропали без вести для меня:Вместо UICollectionView отображается черный экран

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 

Для всего проекта я использовал раскадровки и нормальный UIViewController. На этом контроллере представления я добавил UICollectionView в Interface Builder. Я подключил выход из коллекции с помощью моего контроллера представления и снова настроил источник данных и делегировал методы моему контроллеру. Я также установил пользовательский класс UICollectionViewCell и идентификатор повторного использования в Interface Builder.

Так что все должно работать, но я получаю только черный экран. Что мне не хватает? Вы можете скачать весь проект here.

ответ

23

Вы правильно настройки CollectionView, только что вы забыли цветую этикетку :)

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

enter image description here

Надеется, что это помогает!

4

У меня была та же проблема. Черный экран, по-видимому, является индикатором отсутствия данных, доступных для отображения коллекции. Попробуйте изменить цвет фона в представлении коллекции, если этот измененный цвет отобразится, ваш просмотр коллекции работает. Затем добавьте некоторое изображение в представление коллекции с тегом (пример дает значение 100 с тегом для представления изображения), а cellforItemAtIndexPath устанавливает изображения в представление изображения. (Вы можете сделать это с помощью пользовательской ячейки. Но сейчас, чтобы получить вид коллекции работу, назначение с тегом для ImageView лучше подходит)

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

Вам нужно вручную установить цвет фона представления коллекции в раскадровке.

По умолчанию это черный (хотя и не показывает, что в раскадровке редакторе)

enter image description here

+0

, если вы хотите, чтобы фон был cl вы должны использовать 'collectionView.backgroundColor = [UIColor clearColor];' и 'collectionView.backgroundView = [[UIView alloc] initWithFrame: CGRectZero]; ' – Multinerd

1

В Swift,

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

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

это случилось со мной, что как CollectionView и ячейка просмотра коллекции имела прозрачные фоны

Смежные вопросы