ios - 在 UIButton 中显示事件指示器

标签 ios swift uibutton

我想在按下后将 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)
}
}

关于ios - 在 UIButton 中显示事件指示器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36539650/

相关文章:

ios - Swift 以编程方式向 super View 添加约束

iphone - 在整个应用程序中使用 1 个变量,我在哪里初始化它?

objective-c - UIButton 在 CABasicAnimaton 之后在错误的位置接收到 touchEvents

ios - 为 CollectionView 的单独 Cell 设置圆形标签 [Swift]

ios - 编辑 UIButton 使其一侧有圆角

ios - 将一系列捕获的图像存储到数组中

ios - iOS UIButton 背景边框问题

ios - 如何在 Xcode Playground 中实现自定义字体

swift - 多次获取核心数据

objective-c - 如何在带有 OSX 的 SWIFT 中使用 Cocoa slider 控件