带有 CollectionView 的照片库 xcode
Photo gallery with a CollectionView xcode
我正在构建一个看起来像照片库的应用程序。
我遵循不同的参考,但它仍然不是 运行。
问题出在单元格中的 imageView
,因为如果我尝试更改单元格的 backgroundColor 它会起作用,尽管我尝试更改 imageView
的 image
它没有 运行.
- (void)viewDidLoad {
[super viewDidLoad];
_ownImages = [@[@"1.jpg",
@"2.jpg",
@"2.jpg",
@"3.jpg"] mutableCopy];
self.view = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
UICollectionViewFlowLayout *layout=[[UICollectionViewFlowLayout alloc] init];
_photoGallery =[[UICollectionView alloc] initWithFrame:self.view.frame collectionViewLayout:layout];
[_photoGallery setDataSource:self];
[_photoGallery setDelegate:self];
[_photoGallery registerClass:[PhCell class] forCellWithReuseIdentifier:@"photoCell"];
[self.view addSubview:_photoGallery];
}
这里我更改了CollectionView
的选项
-(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView
{
return 1;
}
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
return CGSizeMake(100, 100);
}
-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
return _ownImages.count;
}
最后,我创建了 Cell
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView
cellForItemAtIndexPath:(NSIndexPath *)indexPath {
PhCell *myCell = [_photoGallery dequeueReusableCellWithReuseIdentifier:@"photoCell" forIndexPath:indexPath];
long row = [indexPath row];
NSLog(@"%@", _ownImages[row]);
image = [UIImage imageNamed:_ownImages[row]];
myCell.backgroundColor = [UIColor clearColor];
myCell.imageView.image = image;
return myCell;
}
为了实现自定义 Cell,我创建了一个名为 PhCell 的 UICollectionViewCell
。在这个 Class 中,我为 cellView
设置了一个 xib 文件,其中有一个 imageView
连接到变量
@property (strong, nonatomic) IBOutlet UIImageView *imageView;
在PhCell.h
代码没有错误,但是显示不了图片,为什么?
试试把图片的背景设置成别的颜色,比如黄色,看图片显示不显示。
在行 image = [UIImage imageNamed:_ownImages[row]];
中我可以看到你没有初始化 image
。
我正在构建一个看起来像照片库的应用程序。
我遵循不同的参考,但它仍然不是 运行。
问题出在单元格中的 imageView
,因为如果我尝试更改单元格的 backgroundColor 它会起作用,尽管我尝试更改 imageView
的 image
它没有 运行.
- (void)viewDidLoad {
[super viewDidLoad];
_ownImages = [@[@"1.jpg",
@"2.jpg",
@"2.jpg",
@"3.jpg"] mutableCopy];
self.view = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
UICollectionViewFlowLayout *layout=[[UICollectionViewFlowLayout alloc] init];
_photoGallery =[[UICollectionView alloc] initWithFrame:self.view.frame collectionViewLayout:layout];
[_photoGallery setDataSource:self];
[_photoGallery setDelegate:self];
[_photoGallery registerClass:[PhCell class] forCellWithReuseIdentifier:@"photoCell"];
[self.view addSubview:_photoGallery];
}
这里我更改了CollectionView
-(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView
{
return 1;
}
- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath
{
return CGSizeMake(100, 100);
}
-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section
{
return _ownImages.count;
}
最后,我创建了 Cell
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView
cellForItemAtIndexPath:(NSIndexPath *)indexPath {
PhCell *myCell = [_photoGallery dequeueReusableCellWithReuseIdentifier:@"photoCell" forIndexPath:indexPath];
long row = [indexPath row];
NSLog(@"%@", _ownImages[row]);
image = [UIImage imageNamed:_ownImages[row]];
myCell.backgroundColor = [UIColor clearColor];
myCell.imageView.image = image;
return myCell;
}
为了实现自定义 Cell,我创建了一个名为 PhCell 的 UICollectionViewCell
。在这个 Class 中,我为 cellView
设置了一个 xib 文件,其中有一个 imageView
连接到变量
@property (strong, nonatomic) IBOutlet UIImageView *imageView;
在PhCell.h
代码没有错误,但是显示不了图片,为什么?
试试把图片的背景设置成别的颜色,比如黄色,看图片显示不显示。
在行 image = [UIImage imageNamed:_ownImages[row]];
中我可以看到你没有初始化 image
。