动画一圈成长
问题描述:
我正在动画化的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];
}
另外,我不停止自己的动画在我的代码中的任何一点。
答
我重新做了一些代码;
-(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
}
随着这些变化,它的行为就像我想要的一样。
我认为这与尝试第二次激活outerCircle有关(它已经从第一个viewDidAppear开始动画,并且当第二次调用viewDidAppear时,它会重新激活一个已经有动画的图像,然后将它制作成borked完全)。
答
我的猜测是viewDidAppear没有被调用,因为从该视图来看,它永远不会消失。
根据你如何创建和显示view2,当你关闭它时,这会在view2内工作吗?
[parentViewController viewDidAppear:YES];
也许'viewDidAppear'没有被调用?显示视图切换代码。 – 2012-03-15 17:49:48
viewDidAppear甚至被称为?你自己加载view2时是否停止动画? – Brodie 2012-03-15 17:50:53
viewDidAppear确实被调用,animateOuterCircle确实被调用。 – Padin215 2012-03-15 19:12:32