0

我很难过为什么这个形状不会动画到另一条路径。我已经尝试过演示 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
4

1 回答 1

3

CABasicAnimation正在尝试discoverPathCAShapeLayer. 但是,CAShapeLayer没有这样的属性。

如果你这样做会发生什么?

CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"path"];
于 2012-12-29T06:56:33.297 回答