我有一些Core Animation代码可以完美地在根View Controller(VC1)上运行,但是当我将根更改为与View 1相连的另一个View Controller(VC2)时,即使调用了VC1的动画方法,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];
}

问题是什么?谢谢。

最佳答案

但是当我将根更改为另一个View Controller(VC2)时,
与VC1相连

您周期中的问题是viewDidLoad,如果您从Child VC返回,则不会被调用。

将内容放入viewWillAppearviewDidAppear

09-06 21:35