Hallo, mache eine UIBAsicAnimation und will das die Drehung dann erhalten bleibt. Neue drehung soll dort starten, wo die alte beendet wurde.
Nur wie? Habe mal im Internet nach Lösungen gesucht, viele vorgeschlagen bekommen, doch keine funktioniert so wirklich.
Drehe mein Imageview um 90, 180 oder 270 Grad, dann soll es dort stehen blieben bis es wieder um 90, 180 oder 270 grad gedreht wird.
Alles anzeigen
Alles anzeigen
Was mache ich falsch?
Und warum dreht sich manchmal mein Pfeil plötzlich gegen die Uhrzeigerrichtung obwohl ich nirgends ein MINUS habe?
Danke
Nur wie? Habe mal im Internet nach Lösungen gesucht, viele vorgeschlagen bekommen, doch keine funktioniert so wirklich.
Drehe mein Imageview um 90, 180 oder 270 Grad, dann soll es dort stehen blieben bis es wieder um 90, 180 oder 270 grad gedreht wird.
Quellcode
- - (IBAction)pushButton:(id)sender
- {
- [self setAltePfeilPosition:_momentanePfeilPosition];
- NSNumber *toNumber;
- switch ([sender tag]) {
- case 0:
- switch (_momentanePfeilPosition) {
- case 0:
- return;
- case 1:
- toNumber = [NSNumber numberWithFloat:M_PI + M_PI / 2];
- break;
- case 2:
- toNumber = [NSNumber numberWithFloat: M_PI];
- break;
- case 3:
- toNumber = [NSNumber numberWithFloat: M_PI / 2];
- break;
- }
- break;
- case 1:
- switch (_momentanePfeilPosition) {
- case 0:
- toNumber = [NSNumber numberWithFloat: M_PI / 2];
- break;
- case 1:
- return;
- case 2:
- toNumber = [NSNumber numberWithFloat:M_PI + M_PI / 2];
- break;
- case 3:
- toNumber = [NSNumber numberWithFloat: M_PI];
- break;
- }
- break;
- case 2:
- switch (_momentanePfeilPosition) {
- case 0:
- toNumber = [NSNumber numberWithFloat: M_PI];
- break;
- case 1:
- toNumber = [NSNumber numberWithFloat: M_PI / 2];
- break;
- case 2:
- return;
- case 3:
- toNumber = [NSNumber numberWithFloat: M_PI + M_PI / 2];
- break;
- }
- break;
- case 3:
- switch (_momentanePfeilPosition) {
- case 0:
- toNumber = [NSNumber numberWithFloat: M_PI + M_PI / 2];
- break;
- case 1:
- toNumber = [NSNumber numberWithFloat: M_PI];
- break;
- case 2:
- toNumber = [NSNumber numberWithFloat: M_PI / 2];
- break;
- case 3:
- return;
- }
- break;
- }
- [self setMomentanePfeilPosition:[sender tag]];
- CABasicAnimation *ani1 = [CABasicAnimation animationWithKeyPath:@"transform.rotation"];
- ani1.delegate = self;
- ani1.duration = 4;
- ani1.toValue = toNumber;
- ani1.removedOnCompletion = NO;
- ani1.fillMode = kCAFillModeForwards;
- [_pfeilImage.layer addAnimation:ani1 forKey:@"drehen"];
- }
Quellcode
- - (void)animationDidStop:(CAAnimation *)anim finished:(BOOL)flag
- {
- if (anim == [_pfeilImage.layer animationForKey:@"drehen"]) {
- [_pfeilImage.layer removeAllAnimations];
- CGAffineTransform drehen;
- if (_altePfeilPosition == _momentanePfeilPosition) return; //der pfeil liegt richtig
- switch (_momentanePfeilPosition) {
- case 0: //nach 0 drehen
- switch (_altePfeilPosition) { // von...
- case 1:
- drehen = CGAffineTransformMakeRotation(M_PI + M_PI / 2);
- break;
- case 2:
- drehen = CGAffineTransformMakeRotation(M_PI);
- break;
- case 3:
- drehen = CGAffineTransformMakeRotation(M_PI / 2);
- break;
- }
- break;
- case 1: // nach 1 drehen
- switch (_altePfeilPosition) { // von ...
- case 0:
- drehen = CGAffineTransformMakeRotation(M_PI / 2);
- break;
- case 2:
- drehen = CGAffineTransformMakeRotation(M_PI + M_PI / 2);
- break;
- case 3:
- drehen = CGAffineTransformMakeRotation(M_PI);
- break;
- }
- break;
- case 2: // nach 2 drehen
- switch (_altePfeilPosition) { // von ...
- case 0:
- drehen = CGAffineTransformMakeRotation(M_PI);
- break;
- case 1:
- drehen = CGAffineTransformMakeRotation(M_PI / 2);
- break;
- case 3:
- drehen = CGAffineTransformMakeRotation(M_PI + M_PI / 2);
- break;
- }
- break;
- case 3: // nach 3 drehen
- switch (_altePfeilPosition) { // von ...
- case 0:
- drehen = CGAffineTransformMakeRotation(M_PI + M_PI / 2);
- break;
- case 1:
- drehen = CGAffineTransformMakeRotation(M_PI);
- break;
- case 2:
- drehen = CGAffineTransformMakeRotation(M_PI / 2);
- break;
- }
- break;
- }
- [_pfeilImage setTransform:drehen];
- }
- }
Was mache ich falsch?
Und warum dreht sich manchmal mein Pfeil plötzlich gegen die Uhrzeigerrichtung obwohl ich nirgends ein MINUS habe?
Danke