UICollectionViewCell 在滚动时可见
UICollectionViewCell becomes visible on scrolling
我有一个 UICollectionView
,其中包含七个 UICollectionViewCells
,它们是使用来自 plist 文件的信息构建的。当我启动应用程序时,只有四个 UICollectionViewCells
可见,直到我开始向下滚动 - 这使得紫罗兰 UICollectionViewCell
可见(见屏幕截图)。我的问题是,如何在应用程序启动时显示第四个(violett)UICollectionViewCell
。
在 - (UICollectionViewCell *)collectionView:(UICollectionView *)cv cellForItemAtIndexPath:(NSIndexPath *)indexPath
中,我正在构建和设置单元格:
CategoryCollectionViewCell *cell = [cv dequeueReusableCellWithReuseIdentifier:catCellID forIndexPath:indexPath];
NSString *plist = [[NSBundle mainBundle] pathForResource:@"mainCategories" ofType:@"plist"];
NSArray *plistArray = [NSArray arrayWithContentsOfFile:plist];
NSDictionary *cat = [plistArray objectAtIndex:indexPath.item];
CGFloat red = [[cat objectForKey:@"color_red"] doubleValue];
CGFloat green = [[cat objectForKey:@"color_green"] doubleValue];
CGFloat blue = [[cat objectForKey:@"color_blue"] doubleValue];
CGFloat alpha = [[cat objectForKey:@"color_alpha"] doubleValue];
UIColor *color = [UIColor colorWithRed:(red/255.0) green:(green/255.0) blue:(blue/255.0) alpha:1];
[cell setBackgroundColor:color];
cell.label_CategoryName = [cat objectForKey:@"text"];
cell.image_CategoryIcon.image = [UIImage imageNamed:[NSString stringWithFormat:@"%@.%@",[cat objectForKey:@"image"], kImageExt]];
return cell;
谢谢!
逐渐向下移动集合视图的内容插图,每次移动 1 个点,直到它开始按您希望的方式运行。
[_collectionView setContentInset:UIEdgeInsetsMake(0, 10, 0, 0)];
CellForRowAtIndex 被触发多次,以下代码...
NSString *plist = [[NSBundle mainBundle] pathForResource:@"mainCategories" ofType:@"plist"];
NSArray *plistArray = [NSArray arrayWithContentsOfFile:plist];
NSDictionary *cat = [plistArray objectAtIndex:indexPath.item];
每次都在内存中构建数组的全新实例。这是非常低效的。考虑实例化您的数组一次,可能在 属性 或 viewDidLoad.
中懒惰地实例化一次
我有一个 UICollectionView
,其中包含七个 UICollectionViewCells
,它们是使用来自 plist 文件的信息构建的。当我启动应用程序时,只有四个 UICollectionViewCells
可见,直到我开始向下滚动 - 这使得紫罗兰 UICollectionViewCell
可见(见屏幕截图)。我的问题是,如何在应用程序启动时显示第四个(violett)UICollectionViewCell
。
在 - (UICollectionViewCell *)collectionView:(UICollectionView *)cv cellForItemAtIndexPath:(NSIndexPath *)indexPath
中,我正在构建和设置单元格:
CategoryCollectionViewCell *cell = [cv dequeueReusableCellWithReuseIdentifier:catCellID forIndexPath:indexPath];
NSString *plist = [[NSBundle mainBundle] pathForResource:@"mainCategories" ofType:@"plist"];
NSArray *plistArray = [NSArray arrayWithContentsOfFile:plist];
NSDictionary *cat = [plistArray objectAtIndex:indexPath.item];
CGFloat red = [[cat objectForKey:@"color_red"] doubleValue];
CGFloat green = [[cat objectForKey:@"color_green"] doubleValue];
CGFloat blue = [[cat objectForKey:@"color_blue"] doubleValue];
CGFloat alpha = [[cat objectForKey:@"color_alpha"] doubleValue];
UIColor *color = [UIColor colorWithRed:(red/255.0) green:(green/255.0) blue:(blue/255.0) alpha:1];
[cell setBackgroundColor:color];
cell.label_CategoryName = [cat objectForKey:@"text"];
cell.image_CategoryIcon.image = [UIImage imageNamed:[NSString stringWithFormat:@"%@.%@",[cat objectForKey:@"image"], kImageExt]];
return cell;
逐渐向下移动集合视图的内容插图,每次移动 1 个点,直到它开始按您希望的方式运行。
[_collectionView setContentInset:UIEdgeInsetsMake(0, 10, 0, 0)];
CellForRowAtIndex 被触发多次,以下代码...
NSString *plist = [[NSBundle mainBundle] pathForResource:@"mainCategories" ofType:@"plist"];
NSArray *plistArray = [NSArray arrayWithContentsOfFile:plist];
NSDictionary *cat = [plistArray objectAtIndex:indexPath.item];
每次都在内存中构建数组的全新实例。这是非常低效的。考虑实例化您的数组一次,可能在 属性 或 viewDidLoad.
中懒惰地实例化一次