核心动画在非根视图控制器时不起作用

时间:2014-08-08 06:34:18

标签: ios objective-c uiviewcontroller core-animation

我有一些核心动画代码可以在根视图控制器(VC1)上完美运行,但是当我将根更改为另一个分割到VC1的视图控制器(VC2)时,VC1上的动画永远不会运行,即使它的动画也是如此方法被称为。有趣的是,如果我关闭segue上的动画,VC1上的核心动画就可以了。

这是我对VC1的实现:

CAShapeLayer* circleLayer;

- (void)setupCircle
{
    CGPathRef circlePath = CGPathCreateWithEllipseInRect(CGRectMake(10, 40, 100, 100), nil);
    circleLayer = [CAShapeLayer layer];
    circleLayer.path = circlePath;
    circleLayer.fillColor = [UIColor orangeColor].CGColor;
    circleLayer.strokeColor = [UIColor blueColor].CGColor;
    circleLayer.lineWidth = 10;
    [self.view.layer addSublayer:circleLayer];
}

- (void)animateCircle
{
    CABasicAnimation* circleAnimation = [CABasicAnimation animationWithKeyPath:@"strokeEnd"];
    circleAnimation.duration = 4;
    circleAnimation.fromValue = @0;
    circleAnimation.toValue = @1;
    [circleLayer addAnimation:circleAnimation forKey:@"circleAnimation"];
}

- (void)viewDidLoad
{
    [super viewDidLoad];
    [self setupCircle];
    [self animateCircle];
}

有什么问题?感谢。

2 个答案:

答案 0 :(得分:1)

  

但当我将root更改为另一个View Controller(VC2)时   转向VC1

你的周期中的问题是viewDidLoad,如果你从Child VC回来,它就不会被称为

将这些内容放入viewWillAppearviewDidAppear

答案 1 :(得分:0)

您可以尝试使用此代码;

[self performSelector:@"setupCircle" withObject:nil afterDelay:0.1];
[self performSelector:@"animateCircle" withObject:nil afterDelay:0.1];