J'ai fait un indicateur occupé qui fonctionne très bien, tant que c'est dans le ViewController que je veux afficher l'indicateur. J'ai essayé de passer à une nouvelle classe de type UIView, mais ne peut rien afficher dans le ViewController.Comment créer une nouvelle classe à partir de UIVisualEffectView et UIActivityIndicatorView
C'est le code de travail, ce n'est pas son propre type:
//Create a busy indicator that can be shown by changing a single variable
var blur: UIVisualEffectView?
var spinner: UIActivityIndicatorView?
var showingActivity: Bool = false {
didSet{
switch showingActivity {
case true:
blur = UIVisualEffectView(effect: UIBlurEffect(style: UIBlurEffectStyle.Dark))
blur!.frame = CGRectMake(100, 100, 150, 150)
blur!.center = self.view.center
blur!.layer.cornerRadius = 10
blur!.clipsToBounds = true
self.view.addSubview(blur!)
spinner = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.WhiteLarge)
spinner!.frame = CGRectMake(0, 0, 50, 50)
spinner!.center = self.view.center
spinner!.hidesWhenStopped = true
spinner!.startAnimating()
self.view.addSubview(spinner!)
UIApplication.sharedApplication().networkActivityIndicatorVisible = true //network activity option
case false:
blur?.removeFromSuperview()
spinner?.removeFromSuperview()
blur = nil
spinner = nil
UIApplication.sharedApplication().networkActivityIndicatorVisible = false //network activity option
default: break
}
}
}
func toggleNetworkActivity() {
showingActivity = !showingActivity
}
Ceci est le code qui ne semble pas créer quoi que ce soit.
class busy : UIView {
var blur = UIVisualEffectView(effect: UIBlurEffect(style: UIBlurEffectStyle.Dark))
var spinner = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.WhiteLarge)
init() {
let frame = CGRect(x: 0, y: 0, width: 300, height: 300)
super.init(frame: frame)
blur.frame = CGRectMake(100, 100, 150, 150)
blur.center = self.center
blur.layer.cornerRadius = 10
blur.clipsToBounds = true
spinner.frame = CGRectMake(0, 0, 50, 50)
spinner.center = self.center
spinner.hidesWhenStopped = true
spinner.startAnimating()
self.setNeedsDisplay()
}
required init(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
Et viewDidLoad:
var test = busy()
test.center = self.view.center
self.view.addSubview(test)