Подтвердить что ты не робот

Вместо UICollectionView отображается черный экран

Я пытаюсь переопределить инфинитивную прокрутку 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.

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

4b9b3361

Ответ 1

Вы правильно настроили CollectionView, просто забыли цвет метки:)

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

enter image description here

Надеюсь, что это поможет!

Ответ 2

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

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

Ответ 3

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

По умолчанию он черный (хотя и не отображается в редакторе раскадровки)

введите описание изображения здесь

Ответ 4

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

Ответ 5

В Swift,

self.label.textColor = UIColor.whiteColor()

Ответ 6

[self.collectionView registerNib:[UINib nibWithNibName:@"ProductCollectionViewCell" bundle:nil] forCellWithReuseIdentifier:@"ProductCollectionViewCell"];

self.collectionView.backgroundColor = [UIColor clearColor];