In unserer App haben wir eine benutzerdefinierte Benachrichtigung, die im Grunde ein Kreis innerhalb der UITabBarItem
ist. Ich habe es hinzugefügt, indem ich die Ansicht von UITabBarItem
und dann eine CAShapeLayer
in einer geeigneten Position erstellt habe. Leider, egal was ich versuche, kann ich nicht die Form animieren. Ich habe versucht, verschiedene Eigenschaften wie path und fillColor ohne Erfolg zu animieren.iOS benutzerdefinierte Animation in UITabBarItem
Hier ist ein Codeauszug:
var lyrShape = CAShapeLayer()
lyrShape.fillColor = UIColor.red.cgColor
lyrShape.path = UIBezierPath(overIn: CGRect(x: 5, y: 5, width: 10, height: 10)).cgPath
vwTabBar.layer.addSublayer(lyrShape)
var aniShape = CABasicAnimation(keyPath: "fillColor")
aniShape.duration = 5
aniShape.toValue = UIColor.blue.cgColor
aniShape.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseIn)
aniShape.fillMode = kCAFillModeBoth
aniShape.autoreverses = true
aniShape.repeatCount = 20
lyrShape.add(aniShape, forKey: aniShape.keyPath)
ich diesen Code in regulären Ansichten habe versucht und es funktioniert super, aber egal was ich versuche ich kann sie nicht in den UITabBarItem
arbeiten.
UPDATE: Ich habe die genauen Schritte herausgefunden, um diesen Fehler zu reproduzieren. Starten Sie Ihre App mit einem einfachen alten View-Controller mit einer Schaltfläche aus. Klicken Sie auf diese Schaltfläche, um die Registerkartenansicht anzuzeigen. Die Formen, die Sie im TabBarItem zeichnen, werden zu diesem Zeitpunkt nicht animiert. JEDOCH: Wenn der TabBarController als erste Ansicht gestartet wird, passiert die Animation ganz gut.
Hat jemand irgendwelche Ideen?
Danke!
Hallo! Danke für die schnelle Antwort. JEDOCH: Ich sehe keinen Grund, warum Sie dies von UITabBarController erben müssen. Was ändert sich? Außerdem: Ich möchte kein Bild animieren. Vielmehr möchte ich einen CAShapeLayer innerhalb des von mir hinzugefügten UITabBarItem animieren. Können Sie erklären, warum das Erben von UITabBarController funktioniert? Und warum, wenn du es nicht tust, nicht? Danke! –
Ich denke, weil wir die Unteransichten der Tableiste nicht iterieren können und wir auch nicht direkt auf die imageview -Eigenschaft zugreifen können. Subclassing gibt Ihnen die Flexibilität, Ihren benutzerdefinierten Code und Ihr Verhalten hinzuzufügen. –
Eigentlich kann man auf verschiedene Arten die Ansicht eines UITabBarItems bekommen. Er zeigt sogar einen wirklich hacky Weg in seinem Beitrag, um die UIImage zu bekommen. Ich wiederhole und teste nach Ansichten eines bestimmten Typs, aber du kannst auf jeden Fall in die Ansicht kommen ... Danke nochmal, dass du wieder zu mir gekommen bist. Ich schätze den Input! –