Gibt es eine Möglichkeit, eine Ansicht mit einer festgelegten Geschwindigkeit für immer rotieren zu lassen? Ich brauche das für ein Indikator-Ding. Ich weiß, dass es diese merkwürdige Lxxxxx00ff Konstante gibt (erinnere mich nicht genau), die für "für immer" steht.Wie lässt sich eine Ansicht für immer drehen?
5
A
Antwort
20
Sie können HUGE_VAL
für Floating-Wert verwenden (wenn ich mich richtig erinnere, repeatCount-Eigenschaft für die Animation ist ein Float).
Zur Einrichtung Animation können Sie CAAnimation Objekt mit +animationWithKeyPath:
Methode erstellen:
CABasicAnimation* animation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
animation.fromValue = [NSNumber numberWithFloat:0.0f];
animation.toValue = [NSNumber numberWithFloat: 2*M_PI];
animation.duration = 3.0f;
animation.repeatCount = HUGE_VAL;
[rotView.layer addAnimation:animation forKey:@"MyAnimation"];
Wenn ich es richtig, diese Art von Rotation Speichern zu schaffen mit nur UIView Animationen ist unmöglich, weil Umdrehungen auf 360 Grad (2 * M_PI Radiant) sind optimiert auf keine Drehung.
0
meine Wette ist:
-(void)animationDidStopSelector:... {
[UIView beginAnimations:nil context:NULL];
// you can change next 2 settings to setAnimationRepeatCount and set it to CGFLOAT_MAX
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(animationDidStopSelector:...)];
[UIView setAnimationDuration:...
[view setTransform: CGAffineTransformRotate(CGAffineTransformIdentity, 6.28318531)];
[UIView commitAnimations];
}
//start rotation
[self animationDidStopSelector:...];
ok bessere Wette:
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationRepeatCount: CGFLOAT_MAX];
[UIView setAnimationDuration:2.0f];
[view setTransform: CGAffineTransformMakeRotation(6.28318531)];
[UIView commitAnimations];
2
meine Lösung hierfür ist ein bisschen hacky, da es nicht zum Kern Animation nicht verwendet, aber zumindest funktioniert es wirklich für immer und erfordert nicht, dass Sie mehrere Animationsschritte einrichten.
...
// runs at 25 fps
NSTimer* timer = [NSTimer scheduledTimerWithTimeInterval:1.0/25
target:self
selector:@selector(rotate)
userInfo:nil
repeats:YES];
[timer fire];
...
- (void)rotate {
static int rotation = 0;
// assuming one whole rotation per second
rotation += 360.0/25.0;
if (rotation > 360.0) {
rotation -= 360.0;
}
animatedView.transform = CGAffineTransformMakeRotation(rotation * M_PI/180.0);
}
Verwandte Themen
- 1. Wie lässt sich eine Panel-Steuerung ansprechen?
- 2. Wie lässt sich eine UIPickerView-Komponente umbrechen?
- 3. Eine Ansicht um 90 Grad drehen iOS
- 4. Wie lässt sich eine Django-App steckbar machen?
- 5. Wie lässt sich am besten eine Webseitenminiatur erstellen?
- 6. Wie Ansicht in eine Tabbar-App zu Landschaft zu drehen
- 7. Swift: Container Ansicht Layout ändert sich beim Drehen und Drehen wieder zurück
- 8. Wie lässt sich SilverLight progressbar gut aussehen?
- 9. Wie lässt sich das iPhone für beliebige Zeiträume vibrieren lassen?
- 10. Wie lässt sich TabControl einfach neu anordnen?
- 11. Wie lässt sich ein LinearLayout scrollbar machen?
- 12. Wie lässt sich eine C# -Klasse am besten gestalten?
- 13. Wie lässt sich eine Klasse mit RestTemplate offline testen?
- 14. Wie lässt sich in CasperJS warten?
- 15. Wie lässt sich der Radioknopftext klickbar machen?
- 16. Wie lässt sich Wasser in GML einfüllen?
- 17. Wie lässt sich ein Bild blinken?
- 18. Wie lässt sich der letzte Buchstabe blinken?
- 19. Wie lässt sich Business Catalyst für jede sichere Zone auf eine separate Anmeldung umleiten?
- 20. Rails: SQL-Abfrage lässt Produktionsserver für immer hängen
- 21. iPhone dev - Manuelles Drehen der Ansicht
- 22. Android: LayoutParams für TextView lässt die Ansicht verschwinden, programmgesteuert
- 23. Wie lässt sich eine einfache Website in mehreren mobilen Browsern richtig darstellen?
- 24. Wie lässt sich das Trackballverhalten in Android Views steuern?
- 25. Welches statische Analysetool für Java lässt sich am einfachsten erweitern?
- 26. drehen der ansicht für android x86 auf VMWare
- 27. Variable ändert sich nicht, wenn sich eine Ansicht ändert
- 28. iPhone: Wie lässt sich die Musik für eine Anwendung mit OpenAL abspielen?
- 29. ionische Frontkamera lässt sich nicht öffnen
- 30. Wie lässt sich MagicMock wie ein Diktat verhalten?
hört sich gut an! Aber wie könnte ich die Animation so einrichten, dass die Ansicht um ganze 390 Grad gedreht wird und weiterläuft? – openfrog
@openfrog, Dies ist die richtige Antwort. Sie drehen die Ansicht, indem Sie die Ebene der Ansicht explizit mit einer einfachen Animation drehen. Es wird "weiter rollen", wenn Sie tun, was Vladimir vorgeschlagen hat. –