为什么这个形状没有动画?

时间:2012-12-29 06:40:31

标签: ios core-animation calayer

我很难过为什么这个形状不会进入另一条路径。我已经尝试过演示CABasicAnimations的工作..如果有人有任何想法会很棒!

#import "AKTabBar.h"

@implementation AKTabBar

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code
        //customize tab bar
    }
    return self;
}

-(void)awakeFromNib {
    CAShapeLayer* tabBarShape = [CAShapeLayer layer];


    UIBezierPath* discoverPath = [UIBezierPath bezierPath];
    [discoverPath moveToPoint: CGPointMake(0, 98)];
    [discoverPath addLineToPoint: CGPointMake(0, 98)];
    [discoverPath addLineToPoint: CGPointMake(0, -0)];
    [discoverPath addLineToPoint: CGPointMake(27.91, -0)];
    [discoverPath addLineToPoint: CGPointMake(34, 7)];
    [discoverPath addLineToPoint: CGPointMake(39.78, -0)];
    [discoverPath addLineToPoint: CGPointMake(320, -0)];
    [discoverPath addLineToPoint: CGPointMake(320, 98)];
    [discoverPath closePath];


    UIBezierPath* sharePath = [UIBezierPath bezierPath];
    [sharePath moveToPoint: CGPointMake(0, 98)];
    [sharePath addLineToPoint: CGPointMake(0, 98)];
    [sharePath addLineToPoint: CGPointMake(0, -0)];
    [sharePath addLineToPoint: CGPointMake(40, -0)];
    [sharePath addLineToPoint: CGPointMake(47, 7)];
    [sharePath addLineToPoint: CGPointMake(39.78, -0)];
    [sharePath addLineToPoint: CGPointMake(320, -0)];
    [sharePath addLineToPoint: CGPointMake(200, 98)];
    [sharePath closePath];

    tabBarShape.path=discoverPath.CGPath;
    tabBarShape.fillColor = [UIColor redColor].CGColor;

//    UIImageView* menu = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"tabBarBackground"]];
    [self.layer addSublayer:tabBarShape];
//    menu.layer.mask=tabBarShape;
//  [ self addSubview:menu];


    CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"discoverPath"];
    animation.duration = 4.0;
    animation.toValue = (__bridge id)(sharePath.CGPath);
    [tabBarShape addAnimation:animation forKey:@"discoverPath"];


}


@end

1 个答案:

答案 0 :(得分:3)

您的CABasicAnimation正在尝试为discoverPath上的媒体资源CAShapeLayer设置动画。但是,CAShapeLayer没有此类属性。

如果你这样做会怎么样?

CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"path"];