Ich versuche mich an der Erstellung einer benutzerdefinierten Aktivität Indikator Ansicht programmatisch. Das Problem ist, dass es nie anfängt zu animieren. Hier ist der Code für die spinner.swift Klasse:Probleme bei der Erstellung einer benutzerdefinierten UIActivityIndicatorView
import UIKit
class spinner: UIActivityIndicatorView {
var flag = Bool()
override init(frame: CGRect) {
super.init(frame: frame)
self.flag = true
self.isHidden = false
}
required init(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func startAnimating() {
self.animate()
}
func animate()
{
if flag == true
{
UIView.animate(withDuration: 0.3, animations: {
self.layer.setAffineTransform(CGAffineTransform(scaleX: 0.5, y: 1))
}) { (success) in
if success == true
{
UIView.animate(withDuration: 0.3, animations: {
self.layer.setAffineTransform(CGAffineTransform.identity)
}, completion: { (success) in
if success == true
{
self.animate()
}
})
}
}
}
}
override func stopAnimating() {
self.flag = false
}
override func draw(_ rect: CGRect) {
let path = UIBezierPath(ovalIn: rect)
UIColor.cyan.setStroke()
path.stroke()
UIColor.red.setFill()
path.fill()
}
}
Dies ist der Code in viewDidLoad(), wo ich die Spinner hinzugefügt haben:
let aiv = spinner(frame: CGRect(x: self.view.bounds.width/2-35, y: self.view.bounds.height/2-35, width: 70, height: 70))
aiv.hidesWhenStopped = true
self.view.addSubview(aiv)
aiv.startAnimating()
print(aiv.isAnimating)
print(air)
Ich habe kein Spinner sehen überhaupt und die folgende Meldung in der Konsole:
false
<spinner.spinner: 0x7f82b3e08240; baseClass = UIActivityIndicatorView; frame = (170 298.5; 35 70); transform = [0.5, 0, 0, 1, 0, 0]; hidden = YES; animations = { transform=<CABasicAnimation: 0x6080000364a0>; }; layer = <CALayer: 0x608000035120>>
nach den Protokollen ist der Spinner versteckt, was bedeutet, es nie gestartet animieren.
Es wäre toll, wenn jemand darauf hinweisen könnte, wo ich falsch liege, und eine mögliche Lösung vorschlagen. Danke!
Die hidesWhenStopped konnte mit didSet Ihrer Flag-Eigenschaft bearbeitet werden – weissja19