How to display activity indicator in center of UIAlertController?

后端 未结 13 1059
猫巷女王i
猫巷女王i 2020-12-08 05:18

I currently have a UIAlertController being displayed on the screen. The view of the alert should only display 2 elements, a title and a UIActivityIndicato

13条回答
  •  北海茫月
    2020-12-08 05:27

    I have to implement NSLayoutConstraints to put the UIActivityIndicatorView on the center of the UIAlertController

    For Swift:

    let loadingAlertController: UIAlertController = UIAlertController(title: "Loading", message: nil, preferredStyle: .alert)
    let activityIndicator: UIActivityIndicatorView = UIActivityIndicatorView(style: .gray)
    activityIndicator.translatesAutoresizingMaskIntoConstraints = false
    
    loadingAlertController.view.addSubview(activityIndicator)
    
    let xConstraint: NSLayoutConstraint = NSLayoutConstraint(item: activityIndicator, attribute: .centerX, relatedBy: .equal, toItem: loadingAlertController.view, attribute: .centerX, multiplier: 1, constant: 0)
    let yConstraint: NSLayoutConstraint = NSLayoutConstraint(item: activityIndicator, attribute: .centerY, relatedBy: .equal, toItem: loadingAlertController.view, attribute: .centerY, multiplier: 1.4, constant: 0)
    
    NSLayoutConstraint.activate([ xConstraint, yConstraint])
    activityIndicator.isUserInteractionEnabled = false
    activityIndicator.startAnimating()
    
    let height: NSLayoutConstraint = NSLayoutConstraint(item: loadingAlertController.view, attribute: NSLayoutConstraint.Attribute.height, relatedBy: NSLayoutConstraint.Relation.equal, toItem: nil, attribute: NSLayoutConstraint.Attribute.notAnAttribute, multiplier: 1, constant: 80)
    loadingAlertController.view.addConstraint(height);
    
    self.present(loadingAlertController, animated: true, completion: nil)
    

    Result:

提交回复
热议问题