滚动 AQGridView 项目时出现延迟

Posted

技术标签:

【中文标题】滚动 AQGridView 项目时出现延迟【英文标题】:Getting lag while scrolling AQGridView items 【发布时间】:2013-08-27 08:25:44 【问题描述】:

我在 GridView 中有 45 个项目(12 行)的 AQGridView 视图,当我滚动视图时出现问题,并且在创建新行时网格变得滞后。我正在考虑创建一次整行并从缓存或其他东西中使用它,而不是每次滚动时都要求创建它,因为它不可用并且滞后时看起来不太好。谢谢

- (AQGridViewCell *) gridView: (AQGridView *) aGridView cellForItemAtIndex: (NSUInteger) `enter code here`index

    NSString *fullThumbPath = [itemsList objectAtIndex:index];
    int startOfThumbWord = [fullThumbPath rangeOfString:@"bundle"].location;
    NSString *shortThumbPath = [fullThumbPath substringFromIndex:startOfThumbWord+7];
    if (
        ([vieta isEqualToString:@"cover"] || [vieta isEqualToString:@""]) && [labelis isEqualToString:@""]) 
        static NSString * PlainCellIdentifier = @"ImageCell";
        AFInstallerImageCell2 * plainCell2 = (AFInstallerImageCell2 *)[aGridView dequeueReusableCellWithIdentifier: PlainCellIdentifier];
            plainCell2 = [[AFInstallerImageCell2 alloc] initWithFrame: CGRectMake(0.0, 0.0, 200.0, 150.0) // 330
                                                    reuseIdentifier: PlainCellIdentifier];

    plainCell2.selectionStyle = AQGridViewCellSelectionStyleNone;
    plainCell2.path = [target stringByAppendingPathComponent:shortThumbPath];//[itemsList objectAtIndex:index];
    plainCell2.image = [UIImage imageWithContentsOfFile:[itemsList objectAtIndex:index]];
    plainCell2.layer.shouldRasterize = YES;
    NSString *shortThumbPath = [fullThumbPath substringFromIndex:startOfThumbWord+30];

    shortThumbPath = [shortThumbPath stringByReplacingOccurrencesOfString:@"/Thumb.png"
                                         withString:@""];

    NSString *title = [[shortThumbPath lastPathComponent] stringByDeletingPathExtension];
    plainCell2.title = [title stringByReplacingOccurrencesOfString:@"_" withString:@" "];
    return ( plainCell2 );

【问题讨论】:

你能分享一些你已经实现的代码吗? 我想看看你的单元格的索引方法 好的,这是我的method @IgnasS 请编辑您的问题并在此处添加代码。 【参考方案1】:

这是因为您一次又一次地创建普通 plainCell2

对 tableView/gridview 使用 dequeueReusableCellWithIdentifier,你可以 大大加快速度。而不是实例化很多单元格,你 只需实例化尽可能多的需要,即尽可能多的可见 (这是自动处理的)。但是您正在创建一个新的 时间

替换这个

 AFInstallerImageCell2 * plainCell2 = (AFInstallerImageCell2 *)[aGridView dequeueReusableCellWithIdentifier: PlainCellIdentifier];
            plainCell2 = [[AFInstallerImageCell2 alloc] initWithFrame: CGRectMake(0.0, 0.0, 200.0, 150.0) // 330
                                                    reuseIdentifier: PlainCellIdentifier];

用这个

     AFInstallerImageCell2 * plainCell2 = (AFInstallerImageCell2 *)[aGridView dequeueReusableCellWithIdentifier: PlainCellIdentifier];
              if(plainCell2 ==nil)  
plainCell2 = [[AFInstallerImageCell2 alloc] initWithFrame: CGRectMake(0.0, 0.0, 200.0, 150.0) // 330
                                                        reuseIdentifier: PlainCellIdentifier];

【讨论】:

我以前试过这个,它不会加快速度。无论如何,谢谢你的帮助! 这是我在上面的代码中看到的唯一问题。如果您还有其他事情,请也添加它

以上是关于滚动 AQGridView 项目时出现延迟的主要内容,如果未能解决你的问题,请参考以下文章

在解决selenium grid报错时出现tomcat启动不起来项目的问题:java.lang.UnsatisfiedLinkError:

wpf 动态添加滚动条

滚动时将新项目添加到列表时出现数组索引超出范围异常

Recyclerview cardview Onclick滚动时出现重复效果

将带有美元符号 ($) 的变量与 facet_grid() 或 facet_wrap() 组合传递给 aes() 时出现问题

使用嵌套适配器垂直滚动时出现滞后问题 | IGListKit