оживляя круг, чтобы расти - PullRequest
0 голосов
/ 15 марта 2012

Я анимирую UIImageView с изображением круга, который растет и исчезает, который повторяется:

-(void)animateOuterCircle
{
    NSLog(@"animating circles");
    [UIView animateWithDuration:1.5 
                          delay:.5
                        options:(UIViewAnimationOptionAllowUserInteraction)
                     animations:^{
                         self.outerCircle.transform=CGAffineTransformMakeScale(.25, .25);
                     }
                     completion:nil];


    [UIView animateWithDuration:1.5 
                          delay:.5
                        options:(UIViewAnimationOptionRepeat | UIViewAnimationOptionAllowUserInteraction)
                     animations:^{    
                         self.outerCircle.transform=CGAffineTransformMakeScale(1.5, 1.5);
                         self.outerCircle.alpha = 0;
                     }
                     completion:nil];

    [self.view bringSubviewToFront:self.outerCircle];
}

я вызываю этот метод в viewDidAppear:

- (void)viewDidAppear:(BOOL)animated
{        
    [self performSelectorOnMainThread:@selector(animateOuterCircle) withObject:nil waitUntilDone:NO];

    //other code
}

Он будет хорошо анимироваться при загрузке mainView. проблема в том, что я загружаю view2 и закрываю view2, когда возвращаюсь в mainView, он больше не анимируется.

есть идеи, почему это происходит?

РЕДАКТИРОВАТЬ: методы называются:

2012-03-15 14:11:13.946[1529:17903] view2 canceled  //dismissing view2
2012-03-15 14:11:13.947[1529:17903] mapView viewWillAppear fired
2012-03-15 14:11:13.948[1529:17903] mapView viewWillAppear end
2012-03-15 14:11:14.352[1529:17903] mapView viewDidAppear fired
2012-03-15 14:11:14.353[1529:17903] animating circles
2012-03-15 14:11:14.354[1529:17903] mapView viewDidAppear end

РЕДАКТИРОВАТЬ 2:

-(IBAction) fourthBtn:(id)sender
{
    view2 *view2 = [self.storyboard instantiateViewControllerWithIdentifier:@"view2"];
    [self presentModalViewController:view2 animated:YES];    
}

отклонение вида 2:

-(IBAction) cancel:(id) sender
{    
    NSLog(@"heir canceled");

    [self dismissModalViewControllerAnimated:YES];
}

Кроме того, я не прекращаю анимацию самостоятельно ни в одной точке моего кода.

Ответы [ 2 ]

0 голосов
/ 20 марта 2012

я заново сделал код;

-(void)viewWillDisappear:(BOOL)animated
{
    [self.outerCircle removeFromSuperview];
    [self.innerCircle removeFromSuperview];
}

- (void)viewDidAppear:(BOOL)animated
{
    self.innerCircle = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"inner-circle.png"]];
    self.innerCircle.frame = CGRectMake(self.innerCircle.frame.origin.x, self.innerCircle.frame.origin.y, 30, 30);

    self.outerCircle = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"outer-circle.png"]];
    self.outerCircle.frame = CGRectMake(self.outerCircle.frame.origin.x, self.outerCircle.frame.origin.y, 40, 40);

    [self.view insertSubview:self.innerCircle belowSubview:HUD];
    [self.view insertSubview:self.outerCircle belowSubview:HUD];

//other code
}

с этими изменениями ведет себя так, как я хочу.

я думаю, что это было связано с попыткой анимировать externalCircle во второй раз (он уже анимировался из первого viewDidAppear, а когда viewDidAppear вызывался во второй раз, он реанимировал уже анимированное изображение и просто полностью его обработал) ).

0 голосов
/ 15 марта 2012

Я предполагаю, что viewDidAppear не вызывается, потому что с точки зрения этого представления оно никогда не исчезает.

В зависимости от того, как вы создаете и отображаете представление 2, будет ли это работать в представлении 2 при закрытииэто?

[parentViewController viewDidAppear:YES];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...