UIActivityIndi​​catorView 在 UICollectionViewCell 中不旋转

2023-11-25

我有一个自定义单元格加载在我的集合视图的底部。它唯一的工作是显示活动指示器视图 - 这在应用程序进行新的工作调用时发生。

所以我将它添加到单元格中,如下所示:

BBLoaderCell *loaderCell = [collectionView dequeueReusableCellWithReuseIdentifier:@"LoaderCell" forIndexPath:indexPath];


UIActivityIndicatorView * activityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];
activityIndicator.hidesWhenStopped = YES;
activityIndicator.hidden = NO;
activityIndicator.center = loaderCell.imageView.center;
activityIndicator.tag = 10;

[loaderCell.imageView addSubview:activityIndicator];

    [activityIndicator startAnimating];
    return loaderCell;

这在我视图的最后一个单元格中显示了一个活动指示器 - 但它不旋转。有任何想法吗?

找到解决方案

根据评论 - 这是一个线程问题。我还采纳了将代码移动到单元格的自定义 nib 文件中的建议。

这是重构的代码:

BBLoaderCell *loaderCell = [collectionView dequeueReusableCellWithReuseIdentifier:@"LoaderCell" forIndexPath:indexPath];
    loaderCell.backgroundColor = [UIColor clearColor];

     if (self.loadingMore == NO){
        dispatch_async(dispatch_get_main_queue(), ^{
            activityIndicator.hidden = YES;
            [loaderCell.spinner stopAnimating];
        });
    }
     else if (self.loadingMore == YES){
    dispatch_async(dispatch_get_main_queue(), ^{
        activityIndicator.hidden = NO;
        [loaderCell.spinner startAnimating];
    });
    }

    return loaderCell;

这正在按我需要的方式工作。

多谢你们!


您最有可能致电reloadData在很短的时间内不止一次。也许已经在下一帧了。默认情况下,活动指示器在停止时隐藏。发生的情况是这样的:

  1. 首先 reloadData 显示微调器
  2. 第二次 reloadData 也会重新加载单元格,并且微调器会隐藏自身
  3. 现在微调器已隐藏
  4. 您四处滚动,但单元格被重复使用。微调器仍然隐藏

您可以设置activityIndicator.hidesWhenStopped = false。旋转器现在应该始终可见。但它不旋转。

添加此操作将恢复旋转。

override func prepareForReuse() {
   activityIndicator.startAnimating()
}

另一个问题可能是颜色。也许微调器的颜色与背景相同。尝试像这样设置微调器的颜色:

activityIndicator.color = .red

You can check if the spinner is there by using the "Debug View Hierarchy" Button Debug View Hierarchie

It will show you the wireframe of the current visible screen Wireframe

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UIActivityIndi​​catorView 在 UICollectionViewCell 中不旋转 的相关文章

随机推荐

  • 将阿拉伯语数据插入mysql数据库

    我尝试输入阿拉伯语文本并使用 php 将其插入到 mysql 数据库中 当打印该行时 阿拉伯语中的所有行如下所示 1 我将数据库设置为 字符集 utf8 UTF 8 Unicode 排序规则 utf8 general ci 以及数据库中的每
  • 使用复杂类型查询 Spark SQL DataFrame

    如何查询具有复杂类型 例如映射 数组 的 RDD 例如 当我编写这个测试代码时 case class Test name String map Map String String val map Map hello gt world hey
  • Zend Framework 2 - BjyAuthorize 始终拒绝访问

    我已经设置了bjyoungblood bjy authorize模块 但我目前正在得到一个403除在配置文件中配置的 URL 之外 每个 URL 都会出现 访问被拒绝 错误home route My module byjauthorize
  • 在烧瓶应用程序中保留全局状态[重复]

    这个问题在这里已经有答案了 我正在尝试将缓存字典保存在我的flask应用 据我了解 应用上下文 特别是烧瓶 g 对象应该用于此目的 Setup import flask as f app f Flask name 现在如果我这样做 with
  • 如何引用同一 appsettings.json 文件中的另一个值?

    我需要在 appsettings json 中的两个位置使用数据库连接字符串 是否可以在 json 文件中引入公共变量或 json path 相关引用以避免潜在的问题 如果能在不接触 C 代码的情况下拥有它 那就太棒了 Connection
  • 使用 sed 编辑 crontab

    我正在编写一个 sed 命令 该命令应取消注释 crontab 中的条目 有一个更好的方法吗 我想到的第一个选项是 sed Example crontab l 5 3 bash test sh sed 命令应取消注释该条目 这就是我现在所拥
  • 使用 JavaScript 更改 HTML 名称属性

    按下一个div 我把它做成了button与其他代码 我想要以下代码 div 1 br div 更改名称name w1 0 to name w1 1 我正在使用以下 JavaScript function weekclick id docum
  • 模数运算符运行第一项,然后每第三项运行

    所以我需要它在第一个循环上运行 然后在每个第三个循环上运行 if k 3 k 1 echo div class modcontainer 对我来说似乎很简单 但我不了解模数 模数返回余数 而不是布尔值 这段代码将解析为true for 1
  • 如何根据 R 中的列值范围拆分数据框?

    我有一个这样的数据集 Users Age 1 2 2 7 3 10 4 3 5 8 6 20 如何将此数据集拆分为 3 个数据集 其中第一个数据集包含年龄在 0 5 岁之间的所有用户 第二个数据集包含 6 10 岁 第三个数据集包含 11
  • 在 iOS4 中 UIWebView 播放视频损坏?

    我有一个从 SDK 2 0 版开始运行的应用程序 我在其中创建并添加 UIWebView 然后加载 mov 的 URL 来播放电影 从 4 0 beta 的早期版本到 4 0 GM 此功能已停止工作 当我现在加载电影时 出现以下错误 插件处
  • 使用 savemat 保存和加载 Python dict 会导致错误

    这是我收到的错误的一个最小示例 如果我正确理解了文档 这应该可以工作 但似乎我没有 a a test1 1 a test2 2 a test3 3 import scipy io as io io savemat temp a a b io
  • Android Instant Apps - 无法“运行未经验证的软件、运行任意本机代码”。仅即时应用程序运行时

    Android Instant Apps 文档中指出受限功能部分它不能 运行未经验证的软件 运行任意本机代码或动态加载除免安装应用运行时提供的代码之外的代码 我不完全理解上述声明 但在我看来 它可能不接受任何第三方软件或除中给出的库之外的任
  • Bash:Git 子模块 foreach?

    I have sup别名为submodule foreach git co master git up co up是别名checkout pull rebase 分别 如何添加条件 以便如果子模块名称是Libraries JSONKit 它
  • 设置 Scrapy 代理中间件在每个请求上轮换

    这个问题必然有两种形式 因为我不知道更好的解决途径 我正在爬行的网站经常将我踢到重定向的 用户被阻止 页面 但频率 按请求 时间 似乎是随机的 并且他们似乎有一个黑名单阻止了我正在使用的许多 开放 代理列表通过代理网格 所以 当 Scrap
  • Node.js - Express.js JWT 始终在浏览器响应中返回无效令牌错误

    我正在使用node js和express js快递 jwt模块 并且我设置了一个简单的 HTTP 服务器来测试所有内容 这是涉及的节点代码 app set port process env PORT 3000 app use express
  • Kubernetes - 没有选择器的服务

    我正在为没有选择器的 Kubernetes 服务而苦苦挣扎 该集群通过 kops 安装在 AWS 上 我有一个包含 3 个 nginx pod 的部署 暴露端口 80 apiVersion apps v1 kind Deployment m
  • 会话的跨子域 cookie 处理?

    是否可以设置一个有效的身份验证 cookie sub1 domain com sub2 domain com 或者每个子域总是需要它自己的 cookie 如果指定要附加到域的 cookie 则可以跨子域使用 cookie domain co
  • 拳击和加宽

    这两者有什么区别呢 我知道拳击正在将原始值转换为引用 什么是扩大 另外 首先应该进行拳击还是应该进行加宽的顺序应该是什么 扩大对拳击和 var args 的胜利 拳击战胜了 var args 引用变量的扩宽取决于继承 因此 Integer
  • 如何使用 Mercurial 子存​​储库来共享组件和依赖项?

    我们使用 C 开发 NET 企业软件 我们正在寻求改进我们的版本控制系统 我以前使用过mercurial 并且一直在我们公司尝试使用它 然而 由于我们开发企业产品 我们非常关注可重用的组件或模块 我一直在尝试使用 Mercurial 的子存
  • UIActivityIndi​​catorView 在 UICollectionViewCell 中不旋转

    我有一个自定义单元格加载在我的集合视图的底部 它唯一的工作是显示活动指示器视图 这在应用程序进行新的工作调用时发生 所以我将它添加到单元格中 如下所示 BBLoaderCell loaderCell collectionView deque