如何以编程方式放置我的 activityIndi​​cator?

How do I place my activityIndicator programmatically?

我想以编程方式将我的 activityIndi​​cator 放置在我想要的位置,但我不知道如何。

我知道怎么把它放在屏幕中央:

activityIndicator.center = self.view.center

但我想要这样的东西:

activityIndicator.activityIndicator(frame: CGRect(x: 100, y: 100, width: 100, height: 50))

但我似乎做不到。

基本上,您只需几行代码即可完成此操作:

 func showActivityIndicatory() {
    var activityView = UIActivityIndicatorView(style: .whiteLarge)
    activityView.center = self.view.center
    self.view.addSubview(activityView)
    activityView.startAnimating()
}

如果您需要对 activityView 进行更多控制,请设置 container 视图的原点以将 activityindicator 放置在屏幕上的任何位置。

func showActivityIndicatory() {
    let container: UIView = UIView()
    container.frame = CGRect(x: 0, y: 0, width: 80, height: 80) // Set X and Y whatever you want
    container.backgroundColor = .clear

    let activityView = UIActivityIndicatorView(style: .whiteLarge)
    activityView.center = self.view.center

    container.addSubview(activityView)
    self.view.addSubview(container)
    activityView.startAnimating()
}

Swift 5:

let activityIndicator = UIActivityIndicatorView(style: UIActivityIndicatorView.Style.gray)

    // Place the activity indicator on the center of your current screen
            myActivityIndicator.center = view.center

    // In most cases this will be set to true, so the indicator hides when it stops spinning
            myActivityIndicator.hidesWhenStopped = true

    // Start the activity indicator and place it onto your view
            myActivityIndicator.startAnimating()
            view.addSubview(myActivityIndicator)

    // Do something here, for example fetch the data from API


    // Finally after the job above is done, stop the activity indicator
            myActivityIndicator.stopAnimating()

您可以声明:

var activityView: UIActivityIndicatorView?

并且,在您的 class 中,创建下一个显示或隐藏指标的方法:

func showActivityIndicator() {
    activityView = UIActivityIndicatorView(style: .large)
    activityView?.center = self.view.center
    self.view.addSubview(activityView!)
    activityView?.startAnimating()
}

func hideActivityIndicator(){
    if (activityView != nil){
        activityView?.stopAnimating()
    }
}

这段代码对我有用。祝你好运!

Swift 4, Swift 5

如果你喜欢我的 daily/favorite 编程模式

// MARK: - Component
lazy var indicatorView: UIActivityIndicatorView = {
  let view = UIActivityIndicatorView(style: .medium)
  view.color = .white
  view.startAnimating()
  view.translatesAutoresizingMaskIntoConstraints = false
  return view
}()

// MARK: - Life Cycle
override func viewDidLoad() {
  super.viewDidLoad()
  setupViews()
  setupLayouts()
}

func setupViews() {
  addSubview(indicatorView)
}

    
func setupLayouts() {
  NSLayoutConstraint.activate([
    indicatorView.centerXAnchor.constraint(equalTo: centerXAnchor),
    indicatorView.centerYAnchor.constraint(equalTo: centerYAnchor)
  ])
}