Почему мое изображение не будет вращаться в Xcode? - PullRequest
0 голосов
/ 29 марта 2011

Я пытаюсь сделать простую анимацию, которая будет непрерывно вращать изображение при нажатии кнопки, но по какой-то причине, когда я нажимаю кнопку, происходит сбой приложения.

Вот мой код.

.h файл:

@interface MainView : UIView {


}

IBOutlet UIImageView *sunray;

- (IBAction)pushrotate:(id)sender;



@end

.m файл:

@implementation MainView


- (IBAction)pushrotate:(id)sender {

    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:0];
    sunray.transform = CGAffineTransformMakeRotation(6.2831855);
    [UIView commitAnimations];

}

-(void) dealloc {

    [sunray dealloc];
    [sunray release];
    [super dealloc];

}
@end

Есть идеи, как я могу заставить это работать? Кроме того, как лучше всего запустить анимацию сразу после загрузки приложения?

Ответы [ 3 ]

0 голосов
/ 29 марта 2011

Вы, вероятно, неправильно подключили действие или розетку (если вы разместите больше консольных выводов, мы были бы уверены). Посмотрите, есть ли у Interface Builder какие-либо маркеры ошибок в ваших действиях / торговых точках.

Также смотрите мой комментарий о вызове dealloc самостоятельно - вы не должны этого делать, за исключением [super dealloc] в вашей собственной реализации dealloc.

0 голосов
/ 16 ноября 2012

вот мое решение повернуть изображение

    -(void)rotate:(int)degree {
       float rad = M_PI * (float)degree / 180.0;

       [UIView beginAnimations:nil context:nil];
       [UIView setAnimationDuration:0];
       [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
       aktivImageView.transform = CGAffineTransformMakeRotation(rad);

       [UIView commitAnimations];
    }

я думаю, вы также можете использовать этот фрагмент кода с кнопкой

в вашем IBAction, который вы можете кодировать [self rotate: 90];чтобы оценить в 90 ° или вы можете использовать [Self Rotate: 0];не поворачивать изображение; -)

0 голосов
/ 29 марта 2011

Если вы установите угол поворота вида, кратный 2 * PI (в вашем случае это выглядит так), то представление распознает, что преобразование фактически не имеет эффекта, и представление не поворачивается.

Чтобы повернуть вид на угол более 2 * PI с анимацией, вам нужно использовать CoreAnimation. Ваш код должен выглядеть примерно так:

//link with QuartzCore.framework
#import <QuartzCore/QuartzCore.h>    
...
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
animation.fromValue = [NSNumber numberWithFloat:0.0f];
animation.toValue = [NSNumber numberWithFloat: 2*M_PI];
animation.duration = 1.0f;
[sanray.layer addAnimation:animation forKey:@"MyAnimation"];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...