【Xcode】UIAlertControllerで簡単進捗ダイアログ作成
カスタムビューを作らず、UIAlertControllerで簡単な進捗ダイアログを表示する方法です。
// インジケータ表示 alert = UIAlertController(title: "Loading...", message: "\n", preferredStyle: .alert) let indicator = UIActivityIndicatorView() indicator.translatesAutoresizingMaskIntoConstraints = false alert.view.addSubview(indicator) let views: [String: UIView] = ["alert": alert.view, "indicator": indicator] var constraints = NSLayoutConstraint.constraints(withVisualFormat: "V:[indicator]-(12)-|", options: [], metrics: nil, views: views) constraints += NSLayoutConstraint.constraints(withVisualFormat: "H:|[indicator]|", options: [], metrics: nil, views: views) alert.view.addConstraints(constraints) indicator.isUserInteractionEnabled = false indicator.color = UIColor.lightGray indicator.startAnimating() present(alert, animated: true, completion: { DispatchQueue.main.asyncAfter(deadline: .now() + 1) { self.alert.dismiss(animated: true, completion: { self.alert = nil }) } })
こちらのサイトの回答を参考にSwift3.0の文法で書き直し、インジケータの位置を調整しました。
アラートの高さをmessageの改行で調整しているのが少々ださいですが、
カスタムビューを作らなくて良いのでお手軽ですね。
stackoverflow.com