我有一个UImageView
我在界面构建器中设置了一个png(一双眼睛)来自我的资源。然后我想用一个眼睛闪烁的动画替换这个图像(在一段特定的时间之后)。
这是我在viewWillAppear
中使用的代码:
NSString *fileName;
NSMutableArray *imageArray = [[NSMutableArray alloc] init];
for(int i = 1; i < 12; i++) {
fileName = [NSString stringWithFormat:@"HDBlinkPage1/hd_eyes_blinking%d.png", i];
[imageArray addObject:[UIImage imageNamed:fileName]];
}
imgHDBlink.userInteractionEnabled = YES;
imgHDBlink.animationImages = imageArray;
imgHDBlink.animationDuration = 0.9;
imgHDBlink.animationRepeatCount = 1;
imgHDBlink.contentMode = UIViewContentModeScaleToFill;
//[self.view addSubview:imgHDBlink];
[imgHDBlink startAnimating];
在viewWillAppear中,我使用NSTimer
每5秒触发一次动画:
[NSTimer scheduledTimerWithTimeInterval:5.0
target:self
selector:@selector(blinkAnimation)
userInfo:nil
repeats:YES];
问题是,当我运行应用程序时,我根本看不到初始静态图像。我只是每5秒钟看一次动画,但在这些动画之间没有睁开眼睛的图像。有谁可以帮我解决这个问题或指出我正确的方向?感谢。
答案 0 :(得分:1)
5.0秒后添加动画图像。来自UIImageView文档:
数组必须包含UIImage对象。您可以在阵列中多次使用相同的图像对象。将此属性设置为nil以外的值会隐藏image属性表示的图像。默认情况下,此属性的值为nil。
如果预先设置animationImages数组,则不会显示图像。
编辑: (全部使用ARC)
- (void) viewDidLoad {
[super viewDidLoad];
//Initialize self.imgHDBlink
}
- (void) viewDidAppear: (BOOL) animated {
[super viewDidAppear: animated];
self.imgHDBlink.image = [UIImage imageNamed: @"static_image"];
[NSTimer scheduledTimerWithTimeInterval: 5.0
target: self
selector: @selector(blinkAnimation:)
userInfo: nil
repeats: YES];
}
- (void) blinkAnimation: (NSTimer*) timer {
self.imgHDBlink.animationImages = [NSArray array]; //Actually add your images here
[self.imgHDBlink startAnimating];
[self.imgHDBlink performSelector: @selector(setAnimationImages:) withObject: nil afterDelay: self.imgHDBlink.animationDuration];
}
//Remember this to stop crashes if we are dealloced
- (void) dealloc {
[NSObject cancelPreviousPerformRequestsWithTarget: self
selector: @selector(blinkAnimation:)
object: nil];
}