这段时间一直在探索一些新奇的事物,博客一直没有更新。今天我们来学一些好玩的东西。比如利用facebook的pop,做一个会动的贝塞尔曲线。废话不多说,来看看吧。
#import "Beisaier.h"
#import <pop/POP.h>
@interface Beisaier ()
{
CAShapeLayer *layer1;
UIBezierPath *aPath1;
}
@end
@implementation Beisaier
- (void)viewDidLoad {
[super viewDidLoad];
self.view.backgroundColor = [UIColor whiteColor];
UIButton *btn = [[UIButton alloc]init];
btn.frame = CGRectMake(100, 500, 30, 30);
[btn addTarget:self action:@selector(paly) forControlEvents:UIControlEventTouchUpInside];
btn.backgroundColor = [UIColor redColor];
[self.view addSubview:btn];
UIView *view1 = [[UIView alloc]init];
view1.frame = CGRectMake(30, 100,300, 400);
[self.view addSubview:view1];
aPath1 = [UIBezierPath bezierPath];
//5角多边形
// Set the starting point of the shape.
// [aPath1 moveToPoint:CGPointMake(100.0, 0.0)];
// [aPath1 addLineToPoint:CGPointMake(200.0, 40.0)];
// [aPath1 addLineToPoint:CGPointMake(160, 140)];
// [aPath1 addLineToPoint:CGPointMake(40.0, 140)];
// [aPath1 addLineToPoint:CGPointMake(0.0, 40.0)];
// [aPath1 closePath];//第五条线通过调用closePath方法得到的
aPath1.lineWidth = 5.0;
aPath1.lineCapStyle = kCGLineCapRound; //线条拐角
aPath1.lineJoinStyle = kCGLineCapRound;//终点处理
[aPath1 moveToPoint:CGPointMake(20, 100)];//起点
//二次曲线
//元素1:CurveToPoint:终点
//元素2:controlPoint:曲线顶部弯曲点
//[aPath1 addQuadCurveToPoint:CGPointMake(120, 100) controlPoint:CGPointMake(50, 0)];
//三次曲线
//元素1:CurveToPoint:曲线终点
//元素2:controlPoint1:曲线顶部弯曲点
//元素3:controlPoint2:第三次弯曲点的位置
[aPath1 addCurveToPoint:CGPointMake(200, 50) controlPoint1:CGPointMake(110, 0) controlPoint2:CGPointMake(110, 200)];
[aPath1 addQuadCurveToPoint:CGPointMake(300, 100) controlPoint:CGPointMake(245, 0)];
[aPath1 stroke];
//创建一个shapelayer
layer1 = [CAShapeLayer layer];
layer1.frame = view1.bounds;
layer1.strokeColor = [UIColor redColor].CGColor;//边缘线的颜色
layer1.fillColor = [UIColor clearColor].CGColor;//闭环填充的颜色
layer1.lineCap = kCALineCapSquare;//边缘线的类型
layer1.path = aPath1.CGPath;//从贝赛尔曲线获取到形状
layer1.lineWidth = 4.0f;//线条宽度
layer1.strokeStart = 0.0f;
layer1.strokeEnd = 0.1f;
[view1.layer addSublayer:layer1];
POPSpringAnimation *strokeAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPShapeLayerStrokeEnd];
// strokeAnimation.toValue = @(strokeEnd);
strokeAnimation.toValue = [NSNumber numberWithFloat:1.0f];
strokeAnimation.fromValue = [NSNumber numberWithFloat:0.f];
//strokeAnimation.springSpeed = 10.0;
//反弹系数越大,速度就越慢,单一的速度并不会减缓动画的速度
strokeAnimation.springBounciness = 120.f;
//strokeAnimation.removedOnCompletion = NO;
[layer1 pop_addAnimation:strokeAnimation forKey:@"layerStrokeAnimation"];
}
-(void)paly
{
POPSpringAnimation *strokeAnimation = [POPSpringAnimation animationWithPropertyNamed:kPOPShapeLayerStrokeEnd];
// strokeAnimation.toValue = @(strokeEnd);
strokeAnimation.toValue = [NSNumber numberWithFloat:1.0f];
strokeAnimation.fromValue = [NSNumber numberWithFloat:0.f];
//strokeAnimation.springSpeed = 10.0;
//反弹系数越大,速度就越慢,单一的速度并不会减缓动画的速度
strokeAnimation.springBounciness = 120.f;
//strokeAnimation.removedOnCompletion = NO;
[layer1 pop_addAnimation:strokeAnimation forKey:@"layerStrokeAnimation"];
}
@end版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/wq820203420/article/details/46738289