显示黑屏而不是 UICollectionView
Instead of UICollectionView a black screen is displayed
我正在尝试重新实现不定式滚动 UICollectionView
here。我缺少的东西:
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
。在这个视图控制器上,我在 Interface Builder 中添加了一个 UICollectionView
。我将集合视图的出口连接到我的视图控制器,并再次设置数据源和委托方法到我的视图控制器。我还设置了 UICollectionViewCell
的自定义 class 和 Interface Builder 中的重用标识符。
所以一切都应该正常,但我只有黑屏。我缺少什么?您可以下载整个项目 here.
您正确配置了 CollectionView,只是您忘记了标签的颜色:)
[self.label setTextColor:[UIColor whiteColor]];
希望对您有所帮助!
我遇到了同样的问题。黑屏似乎表明没有可用于集合视图的数据可显示。尝试更改集合视图的背景颜色,如果必须显示更改后的颜色,则您的集合视图正在运行。然后将一些 imageview 添加到带有标签的集合视图中(例如,为图像视图提供带有标签值的值 100),并使用 cellforItemAtIndexPath 将图像设置为图像视图。
(您可以使用自定义单元格执行此操作。但就目前而言,要使集合视图正常工作,为图像视图分配标签更合适)
UIImageView * ImageView = (UIImageView *)[cell viewWithTag:100];
ImageView.image = [UIImage imageNamed:[images objectAtIndex:indexPath.row]];
您需要在故事板中手动设置集合视图的背景颜色。
默认情况下它是黑色的(虽然在故事板编辑器中没有显示)
在Swift,
self.label.textColor = UIColor.whiteColor()
[self.collectionView registerNib:[UINib nibWithNibName:@"ProductCollectionViewCell" bundle:nil] forCellWithReuseIdentifier:@"ProductCollectionViewCell"];
self.collectionView.backgroundColor = [UIColor clearColor];
我碰巧 collectionView 和 collection view cell 都有透明背景
我正在尝试重新实现不定式滚动 UICollectionView
here。我缺少的东西:
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
。在这个视图控制器上,我在 Interface Builder 中添加了一个 UICollectionView
。我将集合视图的出口连接到我的视图控制器,并再次设置数据源和委托方法到我的视图控制器。我还设置了 UICollectionViewCell
的自定义 class 和 Interface Builder 中的重用标识符。
所以一切都应该正常,但我只有黑屏。我缺少什么?您可以下载整个项目 here.
您正确配置了 CollectionView,只是您忘记了标签的颜色:)
[self.label setTextColor:[UIColor whiteColor]];
希望对您有所帮助!
我遇到了同样的问题。黑屏似乎表明没有可用于集合视图的数据可显示。尝试更改集合视图的背景颜色,如果必须显示更改后的颜色,则您的集合视图正在运行。然后将一些 imageview 添加到带有标签的集合视图中(例如,为图像视图提供带有标签值的值 100),并使用 cellforItemAtIndexPath 将图像设置为图像视图。 (您可以使用自定义单元格执行此操作。但就目前而言,要使集合视图正常工作,为图像视图分配标签更合适)
UIImageView * ImageView = (UIImageView *)[cell viewWithTag:100];
ImageView.image = [UIImage imageNamed:[images objectAtIndex:indexPath.row]];
您需要在故事板中手动设置集合视图的背景颜色。
默认情况下它是黑色的(虽然在故事板编辑器中没有显示)
在Swift,
self.label.textColor = UIColor.whiteColor()
[self.collectionView registerNib:[UINib nibWithNibName:@"ProductCollectionViewCell" bundle:nil] forCellWithReuseIdentifier:@"ProductCollectionViewCell"];
self.collectionView.backgroundColor = [UIColor clearColor];
我碰巧 collectionView 和 collection view cell 都有透明背景