在 UIButton 内显示活动指示器

2024-03-25

我想在按下 UIButton 后将其内容更改为 ActivityIndi​​cator。

我知道按钮有 imageView 和 titleLabel,但我不知道如何在其中放置活动指示器。

这就是我创建活动指标的方法:

let aiView = UIActivityIndicatorView(activityIndicatorStyle: .Gray)
aiView.startAnimating()
aiView.center = CGPointMake(0,0)
aiView.hidesWhenStopped = false

import UIKit

class LoadingButton: UIButton {
private var originalButtonText: String?
var activityIndicator: UIActivityIndicatorView!

func showLoading() {
    originalButtonText = self.titleLabel?.text
    self.setTitle("", for: .normal)
    
    if (activityIndicator == nil) {
        activityIndicator = createActivityIndicator()
    }
    
    showSpinning()
}

func hideLoading() {
    self.setTitle(originalButtonText, for: .normal)
    activityIndicator.stopAnimating()
}

private func createActivityIndicator() -> UIActivityIndicatorView {
    let activityIndicator = UIActivityIndicatorView()
    activityIndicator.hidesWhenStopped = true
    activityIndicator.color = .lightGray
    return activityIndicator
}

private func showSpinning() {
    activityIndicator.translatesAutoresizingMaskIntoConstraints = false
    self.addSubview(activityIndicator)
    centerActivityIndicatorInButton()
    activityIndicator.startAnimating()
}

private func centerActivityIndicatorInButton() {
    let xCenterConstraint = NSLayoutConstraint(item: self, attribute: .centerX, relatedBy: .equal, toItem: activityIndicator, attribute: .centerX, multiplier: 1, constant: 0)
    self.addConstraint(xCenterConstraint)
    
    let yCenterConstraint = NSLayoutConstraint(item: self, attribute: .centerY, relatedBy: .equal, toItem: activityIndicator, attribute: .centerY, multiplier: 1, constant: 0)
    self.addConstraint(yCenterConstraint)
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 UIButton 内显示活动指示器 的相关文章

  • 适用于 iOS 的最佳存档器库 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个可在我的 iOS 应用程序中使用的存档器库 zip 或其他格式 就以下方面而言 最好的图书
  • 内置点赞按钮 - Facebook SDK 3.0

    有人知道关于将 我喜欢它 按钮放入应用程序的好教程吗 我对 Facebook SDK 3 0 和所谓的内置点赞按钮特别感兴趣 到目前为止 我一直在google和stackoverflow上搜索 但没有找到任何关于SDK 3 0的信息 发布内
  • Xcode 9 - Alamofire Pod。命令 /bin/sh 失败,退出代码为 1

    Users Alex Library Developer Xcode DerivedData MyProject ehabmnclpzlywhabrefntacibonm Build Intermediates noindex Archiv
  • 为什么removeAllObservers()在deinit中不起作用?

    众所周知 在 iOS 中使用 Firebase 的强大功能时 每当您在视图控制器中进行观察时 var o DatabaseReference var o2 DatabaseReference var o3 DatabaseReference
  • UIScrollView 滚动时捕捉到位置

    我正在尝试实现一个捕捉到点的滚动视图滚动时 我在这里看到的所有帖子都是关于在用户结束拖动滚动条 之后 捕捉到某个点的 我想让它在拖动过程中折断 到目前为止 我已经用它来停止拖动后的惯性 并且效果很好 func scrollViewWillE
  • Objective-c:如何创建不同深浅的颜色

    是否有任何算法可以为给定的十六进制或 RGB 值创建不同的阴影 我尝试过增加和减少 alpha 但浅色 例如 白色 看起来不太好 实现此目的的最佳方法是使用 HSB 色彩空间 这就是我在最新的应用程序中完成键盘左手部分的方式 颜色的 阴影
  • 支持从右到左的纯布局

    iOS纯布局支持从右到左的语言吗 我们如何在阿拉伯语言的代码中实现它 而不需要去设置并选择区域和格式语言 Thanks 您可以通过在 Xcode gt 编辑方案 gt 运行 gt 选项 选项卡 gt 应用程序语言 gt 从右到左伪语言中选择
  • 为什么 UIScrollView 在顶部留有空间并且不滚动到底部

    我是 Objective C 编程新手 我正在使用 UIScrollView 及其上的一些标签 图像和文本视图 我已关闭自动布局 并已尝试打开 调整滚动视图插图 标题中描述的情况 和关闭 不滚动 这是我插入 viewDidLoad 的内容
  • 故事板入口点缺失

    在 xcode 7 2 中 对象列表中没有 Storyboard Entry Point 项 我需要使用 Storyboard Entry Point 我通过谷歌搜索找不到任何类似的问题 所以任何人都可以在这里帮助我 单击要作为情节提要入口
  • valgrind 和 iOS SDK 4.2?

    使用 valgrind 运行 iOS 4 2 应用程序时遇到问题 我从 Macports 安装了 valgrind 3 6 0 SVN Xcode 3 2 5 当我修改 main 以运行 valgrind 时 我得到以下输出 Detecte
  • 在 Metal 中,将顶点和片段缓冲区设置为相同的 MTLBuffer 是否仅将其复制到 GPU 一次?

    我将统一缓冲区传递给顶点着色器和片段着色器 let uniformBuffer device makeBuffer length 4096 options renderEncoder setVertexBuffer uniformBuffe
  • Jenkins - Xcode 构建工作协同设计失败

    下面是我的构建脚本 不使用 xcodebuild 插件 构建步骤工程 我使用所需的证书和私钥创建了一个单独的钥匙串 它们在钥匙串访问中可见 脚本中的钥匙串命令不会失败 安全列表钥匙串将这些显示为有效的钥匙串 它的表现就像解锁命令并未真正成功
  • textFieldDidChangeSelection:在视图更新期间修改状态,这将导致未定义的行为

    这是我的代码 struct CustomTextField UIViewRepresentable var placeholder String Binding var text String func makeUIView context
  • CoreData 和 SwiftUI:环境中的上下文未连接到持久存储协调器

    我正在尝试通过构建一个作业管理应用程序来自学核心数据 我的代码构建良好 应用程序运行正常 直到我尝试将新分配添加到列表中 我收到这个错误Thread 1 EXC BREAKPOINT code 1 subcode 0x1c25719e8 在
  • 在 RealityKit 中更改对象的枢轴点

    我希望立方体仅在 z 轴正方向上缩放 现在 当我缩放它时 它总是围绕其中心缩放 因此 为此我必须更改对象的锚点 我知道在 SceneKit 中有一个可以使用的枢轴属性 在 RealityKit 中也有办法做到这一点吗 我发现了一个相当简单的
  • 如何正确设置 UIBezierPath 的动画以产生水/波浪效果?

    我正在尝试做一个UIBezierPath像波浪或水一样动画 类似于这样的事情 https dribbble com shots 3994990 Waves Loading Animation https dribbble com shots
  • 如何在 iOS 中使用 Dropbox API 用父版本覆盖文件?

    我正在使用 Dropbox API 开发 iOS 应用程序 使用 dropbox API 上传文件时 我只想覆盖同名的现有文件 如何设置父转速以及什么值 谢谢 获取目录中的所有文件 self restclient loadMetadata
  • 如何将多个请求传输到 Firebase 以同时从多个节点获取数据

    我需要从 Firebase 数据库中的 4 个节点检索数据 根据设计 在 firebase 中 这只能通过触发 4 个查询来完成 就我而言 这 4 个查询是独立的 因为我已经知道每个查询的路径 我可以同时触发它们 我从 Frank van
  • 在 SwiftUI TextEditor 中设置光标位置

    有没有办法以编程方式将光标移动到特定文本行或在 SwifUI 中选择它TextEditor 例如 如果有一个TextEditor里面写着10行 当用户按下按钮时 光标将导航到第三行 或者文本将被选择 目前使用默认的 SwiftUI 是不可能
  • 保存时出现 iphone 核心数据未解决的错误

    尝试保存时 我从核心数据中收到一条奇怪的错误消息 但问题是错误不可重现 在执行不同任务时 它会在不同时间出现 错误消息 Unresolved error Domain NSCocoaErrorDomain Code 1560 UserInf

随机推荐

  • 在启动 Express 服务器之前等待几个数据库连接?

    我正在开发一个 Express 应用程序 启动时 它连接到 Redis 服务器和 PostgreSQL 服务器 我想在启动 Express 服务器之前等待两个连接都成功 现在 如果我只是等待one回调 我可以在该回调中启动 Express
  • F#:管道与作曲与......作曲?

    我对一切都很陌生 F 一般编程以及这个社区 我是一名数学家 在本科期间曾短暂接触过计算机科学 我正在尝试用 F 完成一些任务 F 备忘单 http dungpa github io fsharp cheatsheet 展示了三种不同的函数组
  • Jetpack 仅撰写粗体字符串占位符

    我有一个像这样的字符串资源
  • 这段代码如何使用保留关键字作为字段名称?

    我在遗产中发现了以下结构java字节码在尝试解决服务器应用程序启动问题时 我的 IDE 反编译了一些第三方库 我很好奇这如何有效 以前从未见过keywords可以用作字段名称在字节码中 字节码版本为 48 0 Java 1 4 public
  • 使用 pydev 中的 unittest 在 Python 中对整个项目层次结构进行单元测试

    我正在使用 unittest 模块对一些使用 Pydev 在包的分层结构中创建的 python 代码进行单元测试 当我尝试在 pydev 中对实际源代码及其单元测试使用单独的源文件夹时 问题就出现了 project src com myse
  • IBAN 验证检查

    我需要使用 JavaScript 进行 IBAN 验证检查 我需要遵循的规则是 验证 IBANIBAN 的验证方法是将其转换为整数并对其执行基本 mod 97 运算 如 ISO 7064 中所述 如果 IBAN 有效 则余数等于 1 检查国
  • Flexbox:居中元素,两侧有空间元素

    我正在使用 Flexbox 设置一个由七个组成的菜单 li 具有不同宽度的元素 我想要我的中间 源顺序中的第四个 li li 元素始终作为一种锚点水平居中 第 1 3 个元素 li li 元素占据居中左侧的空间 li li 第 5 7 个占
  • 如何将 LESS 集成到 ZendFramework 2 中

    我已经发现本教程 https stephen rees carter net thought integrating less with zend framework the easy way这是为了Zend框架1 我下载少了放在下面项目
  • 如何知道特定的 launchd .plist 文件位置?

    是否可以知道由加载的 plist 文件位置launchctl命令 标签名称列出为launchctl list其内容可以通过以下方式查看launchctl list LABEL 但我找不到 plist 文件位置 我知道它将位于 Library
  • 关于使用 iostream 进行解析的准则是什么?

    我发现自己最近写了很多解析代码 大部分是自定义格式 但并不真正相关 为了增强可重用性 我选择将解析函数基于 I O 流 以便我可以将它们与诸如boost lexical cast lt gt 然而 我意识到我从未在任何地方读过有关如何正确执
  • ASP.NET MVC 如何在不重写 URL 的情况下处理 Application_Error 的 404 错误

    我创建了一个非常简单的 ASP NET MVC 5 应用程序 我想在其中处理我的 404 异常Application Error如图所示这个问题 https stackoverflow com questions 7501810 net m
  • 有没有办法阻止 pandas to_json 添加 \?

    我正在尝试将 pandas 数据帧发送到 json 但我遇到了一些日期问题 我得到了一个额外的 以便我的记录看起来像Updated 09 06 2016 03 09 44 是否可以不添加这个额外的 我假设它是某种转义字符 但我无法找到与此相
  • Laravel 5.3 - InvalidArgumentException 查看 [索引] 未找到 [重复]

    这个问题在这里已经有答案了 I 已经部署我的 Laravel 应用程序到我的VPS 它在本地主机上运行良好 我认为错误出在我的路由中 或者可能是控制器中 因为路径仍然进入我的本地计算机目录 请参阅错误消息第 2 行 但我确实看不到代码中的问
  • 在 MySQL 中使用 JOIN 时避免出现不明确的列错误

    我的查询如下所示 sql SELECT u s FROM bands u inner join statuses s on u status id s id WHERE u status id 1 ORDER BY u band name
  • CGBitmapContextCreate:不支持的参数组合

    我正在尝试创建一个 8 位灰度上下文 如下所示 CGColorSpaceRef colorSpace CGColorSpaceCreateDeviceGray CGContextRef context CGBitmapContextCrea
  • Interface Builder:如何清理已删除的约束?

    我使用命令删除来删除 IB 中地图视图小部件的一些约束 正如附图所示 约束实际上只是褪色 而不是完全删除 我已经尝试过保存文件并重新打开项目 但似乎它们不会被 XCode 删除 我怎样才能将它们删除 EDIT 这是我在尺寸检查器窗口中看到的
  • 连续输入时不要引发 TextChanged

    我有一个相当大的文本框 TextChanged事件处理程序 在正常打字条件下 性能还不错 但当用户执行长时间连续操作时 例如按住退格按钮一次删除大量文本 它可能会明显滞后 例如 事件需要 0 2 秒才能完成 但用户每 0 1 秒执行一次删除
  • 仅用图像制作按钮的最简单方法

    我正在使用 Delphi XE 我想制作一个按钮 仅显示提供的具有透明背景的 PNG 图像 并且没有任何类型的附加边距 我尝试使用 TButton 执行此操作 但我得到了 bsPushButton 样式的难看的灰色背景 如果我使用 bsCo
  • Gradle 无法解析 com.google.android.gms:play-services-auth:11.6.0 [重复]

    这个问题在这里已经有答案了 我正在尝试在我的移动应用程序中使用谷歌登录 但在遵循谷歌的教程后出现以下错误 无法解析 com google android gms play services auth 11 6 0 我的 gradle 文件
  • 在 UIButton 内显示活动指示器

    我想在按下 UIButton 后将其内容更改为 ActivityIndi cator 我知道按钮有 imageView 和 titleLabel 但我不知道如何在其中放置活动指示器 这就是我创建活动指标的方法 let aiView UIAc