この形状が他のパスにアニメーション化されない理由に私は困惑しています。私はうまくいったデモ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