[英]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.