gpt4 book ai didi

ios - UIImageView 不会使用基于图像的动画进行动画处理

转载 作者:行者123 更新时间:2023-11-29 12:13:32 26 4
gpt4 key购买 nike

我在 Storyboard 中创建了 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

关于ios - UIImageView 不会使用基于图像的动画进行动画处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32595376/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com