我很难过为什么这个形状不会进入另一条路径。我已经尝试过演示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
答案 0 :(得分:3)
您的CABasicAnimation
正在尝试为discoverPath
上的媒体资源CAShapeLayer
设置动画。但是,CAShapeLayer
没有此类属性。
如果你这样做会怎么样?
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"path"];