iOS映像启动映像不是';t动画制作(大部分时间)
我有一个动画,因为某种原因没有动画iOS映像启动映像不是';t动画制作(大部分时间),ios,uiimageview,Ios,Uiimageview,我有一个动画,因为某种原因没有动画 - (void)viewDidLoad { [super viewDidLoad]; self.navigationController.navigationBar.hidden = YES; self.nameLabel.text = [self.name uppercaseString]; self.gradient1.alpha = .9; self.gradient1.image = [UIImage image
- (void)viewDidLoad
{
[super viewDidLoad];
self.navigationController.navigationBar.hidden = YES;
self.nameLabel.text = [self.name uppercaseString];
self.gradient1.alpha = .9;
self.gradient1.image = [UIImage imageNamed:@"heart.png"];
self.gradient1.animationImages = [[NSArray alloc] initWithObjects:
[UIImage imageNamed:@"gradiant1.png"],
[UIImage imageNamed:@"gradiant2.png"],
...
[UIImage imageNamed:@"gradiant26.png"], nil];
self.gradient1.animationDuration = .5;
self.gradient1.animationRepeatCount = 1;
[self updateStats:nil];
}
-(void)updateStats:(NSTimer*)timer{
Utilities *utility = [[Utilities alloc] init];
[utility getDataWithSSID:self.ssID completion:^(bool *finished, NSArray *objects) {
if (finished){
...
[self.gradient1 startAnimating];
}
self.twoSecTimer = [NSTimer scheduledTimerWithTimeInterval:2.0 target:self
selector:@selector(updateStats:)
userInfo:nil
repeats:NO];
}];
}
有时,它会设置一次或两次动画,然后停止,即使计时器不断重复。其他时候它根本就没有动画。然而,我有一对占位符按钮,我放在故事板上,它们与任何东西都没有关联,每当我按下其中一个按钮,它就会在下次计时器点击时显示动画(实际上,每当我点击屏幕时,即使我没有任何类型的手势识别器……)。此外,当我在这个ViewController中添加所有其他垃圾时,它会每隔一次调用它时设置动画。因此,我认为这比我忘记的更深刻,所以设置一些属性。最好将动画触发器移动到该视图实际可见的时刻,从而使视图显示: 你创建递归计时器调度的方式也让我不寒而栗。我想这对您来说很好,但我绝对建议使用设置为
YES
的repeats
标志
- (void)viewDidLoad
{
[super viewDidLoad];
self.navigationController.navigationBar.hidden = YES;
self.nameLabel.text = [self.name uppercaseString];
self.gradient1.alpha = .9;
self.gradient1.image = [UIImage imageNamed:@"heart.png"];
self.gradient1.animationImages = [[NSArray alloc] initWithObjects:
[UIImage imageNamed:@"gradiant1.png"],
[UIImage imageNamed:@"gradiant2.png"],
...
[UIImage imageNamed:@"gradiant26.png"], nil];
self.gradient1.animationDuration = .5;
self.gradient1.animationRepeatCount = 1;
}
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
//animate right away...
[self updateStats:nil];
//trigger new animations every two seconds
self.twoSecTimer = [NSTimer scheduledTimerWithTimeInterval:2.0 target:self
selector:@selector(updateStats:)
userInfo:nil
repeats:YES];
}
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
[self stopUpdatingStats];
}
-(void)stopUpdatingStats
{
[self.twoSecTimer invalidate];
}
-(void)updateStats:(NSTimer*)timer
{
NSLog(@"updating");
[self.gradient1 startAnimating];
}
似乎您正在递归调用updateStats:。我已经看到,当递归调用影响UI的方法时,UI会被锁定。在updateStats:中放置一个断点以进行验证。它运行良好,没有锁定。我必须这样做,因为递归调用实际上在另一个函数调用的完成块中。