我试图在UICollectionView中显示图像数组。正在显示单元格,但图像不是。
这是正在构建的单元格:
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView
cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *identifier = @"Cell";
UICollectionViewCell *cell =
[collectionView dequeueReusableCellWithReuseIdentifier:identifier
forIndexPath:indexPath];
UIImageView * catagoryImage = [[UIImageView alloc] initWithFrame:CGRectMake((cell.frame.origin.x),(cell.frame.origin.y), cell.frame.size.width, cell.frame.size.height)];
[catagoryImage setImage:[UIImage imageNamed:[Apps objectAtIndex:indexPath.row]]];
[cell.layer setCornerRadius:4];
[cell addSubview:catagoryImage];
cell.clipsToBounds = NO;
return cell;
}
这是声明的数组:
Apps = [NSArray arrayWithObjects:@"Appstore.jpg", @"2.gif", @"3.gif", @"4.gif", @"5.gif", @"7.gif", @"8.gif",@"9.gif", nil];
有什么想法吗?
答案 0 :(得分:0)
你有几个选择,但我会说出2:
This。这有点hacky。但它有效
子类UICollectionViewCell
答案 1 :(得分:0)
代码有两个问题。第一个更大的一个是在cellForItemAtIndexPath
的每次调用中创建图像视图的想法。
每次将一个单元格滚动到视图中时都会调用此方法,并且会重复使用这些单元格,因此当用户滚动时,您的单元格将会堆叠成堆叠的UIImageViews。
问题二是imageView框架的坐标系。它应该相对于单元格的边界放置,而不是位于父视图(集合视图)坐标空间中的单元格框架,所以......
// see if this cell has an image view already
UIImageView *categoryImageView = (UIImageView *)[cell viewWithTag:128];
if (!categoryImageView) {
// only create one if we don't have one
CGRect frame = cell.bounds; // this is zero based, relative to the cell
categoryImageView = [[UIImageView alloc] initWithFrame:frame];
categoryImageView.tag = 128; // so we can find it later
[cell addSubview:categoryImageView];
}
// add it conditionally, but configure it unconditionally
categoryImageView.image = [UIImage imageNamed:[Apps objectAtIndex:indexPath.row]]];
代码的另一个可能问题是访问Apps objectAtIndex:
。显然Apps
是非常规命名的NSArray实例。如果您的numberOfItemsInSection
数据源方法返回Apps.count
,并且数组中的所有元素都是应用包中的图像名称,那么这是可以的。
答案 2 :(得分:0)
怀疑它。
图像不在键盘方案中,位于容器包中。