Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/119.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS映像启动映像不是';t动画制作(大部分时间)_Ios_Uiimageview - Fatal编程技术网

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:中放置一个断点以进行验证。它运行良好,没有锁定。我必须这样做,因为递归调用实际上在另一个函数调用的完成块中。