繁体   English   中英

UIImageView将不与基于图像的动画制作动画

[英]UIImageView will not animate with an image based animation

我在情节UIImageView中创建了8个UIImageView ,试图通过基于图像的动画制作动画,但是由于某些原因,图像无法动画。

viewController.h

#import <UIKit/UIKit.h>

@class RandomImages;

@interface ViewController : UIViewController

// Outlets foe the dice
@property (weak, nonatomic) IBOutlet UIImageView *dieImage0;
@property (weak, nonatomic) IBOutlet UIImageView *dieImage1;
@property (weak, nonatomic) IBOutlet UIImageView *dieImage2;
@property (weak, nonatomic) IBOutlet UIImageView *dieImage3;
@property (weak, nonatomic) IBOutlet UIImageView *dieImage4;
@property (weak, nonatomic) IBOutlet UIImageView *dieImage5;
@property (weak, nonatomic) IBOutlet UIImageView *dieImage6;
@property (weak, nonatomic) IBOutlet UIImageView *dieImage7;
@property (weak, nonatomic) IBOutlet UIButton *MenuButton;
@property (weak, nonatomic) IBOutlet UIButton *rollTargetButton;

@property (strong, nonatomic) RandomImages *randomImages;
@property (strong, nonatomic) NSArray *diceOutletArray;

- (void) rollDice;

@end

viewController.m

#import "ViewController.h"
#import "RandomImages.h"

@interface ViewController ()

@end

@implementation ViewController
@synthesize dieImage0;
@synthesize dieImage1;
@synthesize dieImage2;
@synthesize dieImage3;
@synthesize dieImage4;
@synthesize dieImage5;
@synthesize dieImage6;
@synthesize dieImage7;
@synthesize diceOutletArray;
@synthesize rollTargetButton;

- (void)viewDidLoad {
    [super viewDidLoad];

    self.randomImages = [[RandomImages alloc] init];

    self.rollTargetButton.hidden = YES;

    self.diceOutletArray = [[NSArray alloc] initWithObjects:self.dieImage0, self.dieImage1, self.dieImage2, self.dieImage3, self.dieImage4, self.dieImage5, self.dieImage6, self.dieImage7, nil];

     // Animation for rolling dice
    for (UIImageView *dieImages in self.diceOutletArray) {
        dieImages.animationImages = [[NSArray alloc] initWithObjects:
                                     [UIImage imageNamed:@"dicy-die5"],
                                     [UIImage imageNamed:@"dicy-die6"],
                                     [UIImage imageNamed:@"dicy-die1"],
                                     [UIImage imageNamed:@"dicy-die4"],
                                     [UIImage imageNamed:@"dicy-die3"],
                                     [UIImage imageNamed:@"dicy-die5"],
                                     [UIImage imageNamed:@"dicy-die2"],
                                     [UIImage imageNamed:@"dicy-die1"],
                                     [UIImage imageNamed:@"dicy-die6"],
                                     [UIImage imageNamed:@"dicy-die3"],
                                     [UIImage imageNamed:@"dicy-die5"],
                                     [UIImage imageNamed:@"dicy-die2"],
                                     [UIImage imageNamed:@"dicy-die3"], nil];
        dieImages.animationDuration = 1.0f;
        dieImages.animationRepeatCount = 1;

    }


}

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

- (void) rollDice{
    self.diceOutletArray = [[NSArray alloc] initWithObjects:self.dieImage0, self.dieImage1, self.dieImage2, self.dieImage3, self.dieImage4, self.dieImage5, self.dieImage6, self.dieImage7, nil];

    // Randomly set the image of the dice
    for (UIImageView *numberImage in self.diceOutletArray) {

        numberImage.image = [self.randomImages randomNumber];
        [numberImage startAnimating];

    }

}

/* Motion functions *****************************************************************************************/

- (void) motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event {
}
- (void) motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event {
    if (motion == UIEventSubtypeMotionShake) {
        [self rollDice];
        NSLog(@"There was a bump!: Line 85");
    }
    NSLog(@"Motion Ended: Line 87");
}

- (void) motionCancelled:(UIEventSubtype)motion withEvent:(UIEvent *)event {
}

/* Roll Button **********************************************************************************************/

- (IBAction)rollDiceButton {
    [self rollDice];
    NSLog(@"Ouch! Somebody poked me!: Line 97");
}


/* Segues **************************************************************************************************/



@end

RandomImages.m

#import "RandomImages.h"

@implementation RandomImages
@synthesize diceImages;

- (instancetype)init
{
    self = [super init];
    if (self) {
        // Array of dice for the randomNumber method
        self.diceImages = [[NSArray alloc] initWithObjects:
                       [UIImage imageNamed:@"dicey-die1"],
                       [UIImage imageNamed:@"dicey-die2"],
                       [UIImage imageNamed:@"dicey-die3"],
                       [UIImage imageNamed:@"dicey-die4"],
                       [UIImage imageNamed:@"dicey-die5"],
                       [UIImage imageNamed:@"dicey-die6"], nil];
    }
    return self;
}


// Random dice number method
- (UIImage *)randomNumber {
    int random = arc4random_uniform((int)self.diceImages.count);
    return [self.diceImages objectAtIndex:random];
}

@end

RandomImages.h

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>

@interface RandomImages : NSObject

@property (strong, nonatomic) NSArray *diceImages;

- (UIImage *) randomNumber;

@end

选择随机图像确实有效。

我确实在我的rollDice方法中尝试过此方法,但没有任何变化:

dispatch_async(dispatch_get_main_queue(), ^{
        numberImage.image = [self.randomImages randomNumber];
        [numberImage startAnimating];
    });

我相信这是一个错字。
我已经创建了项目,并且您的代码正常工作。
如果您愿意,我会分享我的本地项目。

查找图像文件名。
@"dicey-die..."@"dicy-die..."

我相信@"dicy-die..."未添加到项目中。

更新:
我的项目的github列表
https://github.com/rishi420/TestAnimationImage/tree/master

您应该只有一个UIImageView。 不是8。

动画图像的全部要点是,它使用一个UI元素(一个UIImageView),然后遍历图像。

self.myONEImageView.animationImages = [[NSArray alloc] initWithObjects:
                                 [UIImage imageNamed:@"dicy-die5"],
                                 [UIImage imageNamed:@"dicy-die6"],
                                 [UIImage imageNamed:@"dicy-die1"],
                                 [UIImage imageNamed:@"dicy-die4"],
                                 [UIImage imageNamed:@"dicy-die3"],
                                 [UIImage imageNamed:@"dicy-die5"],
                                 [UIImage imageNamed:@"dicy-die2"],
                                 [UIImage imageNamed:@"dicy-die1"],
                                 [UIImage imageNamed:@"dicy-die6"],
                                 [UIImage imageNamed:@"dicy-die3"],
                                 [UIImage imageNamed:@"dicy-die5"],
                                 [UIImage imageNamed:@"dicy-die2"],
                                 [UIImage imageNamed:@"dicy-die3"], nil];

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM