Ios UIImageView不会使用基于图像的动画制作动画
我有8个Ios UIImageView不会使用基于图像的动画制作动画,ios,objective-c,animation,uiimageview,Ios,Objective C,Animation,Uiimageview,我有8个UIImageViews,它们是在故事板中创建的,我正在尝试使用基于图像的动画来设置动画,但由于某些原因,这些图像无法设置动画 viewController.h #import <UIKit/UIKit.h> @class RandomImages; @interface ViewController : UIViewController // Outlets foe the dice @property (weak, nonatomic) IBOutlet UIIma
UIImageView
s,它们是在故事板中创建的,我正在尝试使用基于图像的动画来设置动画,但由于某些原因,这些图像无法设置动画
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
randominimages.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
randominimages.h
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
@interface RandomImages : NSObject
@property (strong, nonatomic) NSArray *diceImages;
- (UIImage *) randomNumber;
@end
您应该只有一个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];
我认为这是个打字错误。我已经创建了项目,您的代码运行正常。
如果你愿意,我会分享我的本地项目 请注意图像文件名。
@“dicy die…”
和@“dicy die…”
我相信项目中没有添加“@”dicy die…”
更新:
我的项目的github列表
为什么在每个图像视图上同时设置
动画图像
和图像
?你应该只使用其中一个,而不是两个。我是在这样做吗?你是说for循环吗,ImageView是否被指定了名称“dieMages”?(我说得对吗?)在viewdiload
中,为所有图像视图设置animationImages
。然后在rollDice
中为所有图像视图设置image
。屏幕上有7个骰子吗?我有点不知道你希望在这里做什么不,试着确保它在主线程上运行。Dispatch\u async get\u main\u Que如果要设置8个UIImageView的动画,该怎么办?我正在尝试制作“骰子”的动画。是的,我想看看你的项目。@CalebKleveter-answer更新。请随意更改此回购协议。
dispatch_async(dispatch_get_main_queue(), ^{
numberImage.image = [self.randomImages randomNumber];
[numberImage startAnimating];
});
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];