2013-10-11 2 views
1

Я создал страницу .h, .m, чтобы анимировать некоторые объекты UIImageView, но не может заставить их анимировать. Не получали никаких предупреждений, ошибок.Не удается получить объекты UIImageView для анимации

Не могли бы вы рассказать мне, что случилось? ТИА

ViewController.h

#import <UIKit/UIKit.h> 

@interface ViewController : UIViewController 

@property (strong, nonatomic) IBOutlet UILabel *predictionLabel; 
@property (strong, nonatomic) NSArray *predictionArray; 
@property (strong, nonatomic) UIImageView *imageView; 

- (void) makePrediction; 

@end 

ViewController.m

#import "ViewController.h" 

@interface ViewController() 

@end 

@implementation ViewController 
@synthesize predictionArray; 
@synthesize imageView; 

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 

    UIImage *image = [UIImage imageNamed:@"background_s4.png"]; 
    self.imageView = [[UIImageView alloc]initWithImage:image]; 
    [self.view insertSubview:self.imageView atIndex:0]; 
    self.imageView.animationImages = [[NSArray alloc]initWithObjects:[UIImage imageNamed:@"cball00001.png"], 
             [UIImage imageNamed:@"cball00002.png"], 
             [UIImage imageNamed:@"cball00003.png"], 
             [UIImage imageNamed:@"cball00004.png"], 
             [UIImage imageNamed:@"cball00005.png"], 
             [UIImage imageNamed:@"cball00006.png"], 
             [UIImage imageNamed:@"cball00007.png"], 
             [UIImage imageNamed:@"cball00008.png"], 
             [UIImage imageNamed:@"cball00009.png"], 
             [UIImage imageNamed:@"cball00010.png"], 
             [UIImage imageNamed:@"cball00011.png"], 
             [UIImage imageNamed:@"cball00012.png"], 
             [UIImage imageNamed:@"cball00013.png"], 
             [UIImage imageNamed:@"cball00014.png"], 
             [UIImage imageNamed:@"cball00015.png"], 
             [UIImage imageNamed:@"cball00016.png"], 
             [UIImage imageNamed:@"cball00017.png"], 
             [UIImage imageNamed:@"cball00018.png"], 
             [UIImage imageNamed:@"cball00019.png"], 
             [UIImage imageNamed:@"cball00020.png"], 
             [UIImage imageNamed:@"cball00021.png"], 
             [UIImage imageNamed:@"cball00022.png"], 
             [UIImage imageNamed:@"cball00023.png"], 
             [UIImage imageNamed:@"cball00024.png"], nil]; 
    self.imageView.animationDuration = 1.0; 
    self.imageView.animationRepeatCount = 1; 

    self.predictionArray = [[NSArray alloc]initWithObjects:@"It is certain", 
           @"All signs are YES", 
           @"The stars are not aligned", 
           @"My reply is no", 
           @"It is doubtful", 
           @"Better not tell you now", 
           @"Concentrate and ask again", 
           @"Unable to answer now", nil]; 
} 

- (void)didReceiveMemoryWarning 
{ 
    [super didReceiveMemoryWarning]; 
    // Dispose of any resources that can be recreated. 
} 

- (void) makePrediction 
{ 
    NSUInteger index = arc4random_uniform(self.predictionArray.count); 
    self.predictionLabel.text = [self.predictionArray objectAtIndex:index]; 

    [self.imageView startAnimating]; 
} 

- (BOOL) canBecomeFirstResponder 
{ 
    return YES; 
} 

- (void) motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event 
{ 
    self.predictionLabel.text = @""; 
} 

- (void) motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event 
{ 
    if (motion == UIEventSubtypeMotionShake){ 
     [self makePrediction]; 
    } 
} 

- (void) motionCancelled:(UIEventSubtype)motion withEvent:(UIEvent *)event 
{ 
    NSLog(@"motion cancelled"); 
} 

- (void) touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    self.predictionLabel.text = @""; 
} 

- (void) touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    [self makePrediction]; 
} 

@end 
+0

Вы уверены - (void) makePrediction вызывается во время запуска кода? – Tirth

+0

попробуйте запустить анимацию сразу после установки анимационных изображений и проверить, работает ли она или нет? –

+0

Да, это нужно назвать предсказаниемArray, который содержит случайные кавычки. – pdenlinger

ответ

0

Если я создаю новый проект "Single View", вставить код в контроллере представления и добавить несколько тестовых изображений, ваш код отлично работает для меня, как есть (Xcode 5, iOs7, на симуляторе). Проблема, которую вы испытываете, должна зависеть от того, как вы создаете представления или проект.

Несколько предложений:

  • Убедитесь, что анимация фактически называется (срубы makePrediction()), может быть, у вас есть какой-то другой объект в раскадровке, которые могут выступать в качестве первого ответчика.
  • Убедитесь, что у вас есть все изображения, импортированные в ваш проект.
  • Попробуйте инициализировать представление изображения одним из кадров анимации, НЕ с фоном или иметь два разных изображения, один для анимации, а другой для фона.
+0

Привет, только что выяснили проблему. Я создал его как ImageView и Image в IB, а также программно в одно и то же время. Поэтому я пошел в IB и удалил ImageView и Image. Затем, когда я скомпилировал его, он работал нормально. – pdenlinger

+0

Да, это была проблема с установкой, ничего не было явно неправильно с самим кодом. – vinaut

Смежные вопросы