美文网首页
贝塞尔曲线、extern

贝塞尔曲线、extern

作者: zhouluyao | 来源:发表于2020-04-11 18:05 被阅读0次

如何用贝塞尔曲线做一些商品添加到购物车的动画效果?

- (void*)addCurveToPoint:(CGPoint)endPoint controlPoint1:(CGPoint)controlPoint1 controlPoint2:(CGPoint)controlPoint2
 //UIBezierPath 顾名思义,这是用贝塞尔曲线的方式来构建一段弧线,贝塞尔曲线的画法是由起点、终点、控制点三个参数来画的,调用 path.moveToPoint(startPoint) 让它移动到起始点,然后调用path.addQuadCurveToPoint(endPoint, controlPoint: controlPoint) 这个方法告诉它结束点和控制点,这样它就能画出一条有弧度的线条了,如果把fillColor设置一个颜色,那么它就会变成一个很丑的形状了
Screen Shot 2020-04-09 at 16.07.25.png
上面的效果它可以用 CAShapeLayer + UIBezierPath 来做,思路大概是这样,先移动到左上方的位置,然后向下划线,然后往右划线,然后往上划线,还剩一个盖子,这个盖子就用一个控制点控制曲率,非常简单,代码如下
let finalSize = CGSizeMake(CGRectGetWidth(view.frame), 400)

let layerHeight = finalSize.height * 0.2

let layer = CAShapeLayer()

let bezier = UIBezierPath()

bezier.moveToPoint(CGPointMake(0, finalSize.height - layerHeight))

bezier.addLineToPoint(CGPointMake(0, finalSize.height - 1))

bezier.addLineToPoint(CGPointMake(finalSize.width, finalSize.height - 1))

bezier.addLineToPoint(CGPointMake(finalSize.width, finalSize.height - layerHeight))

bezier.addQuadCurveToPoint(CGPointMake(0,finalSize.height - layerHeight),

controlPoint: CGPointMake(finalSize.width / 2, (finalSize.height - layerHeight) - 40))

layer.path = bezier.CGPath

layer.fillColor = UIColor.blackColor().CGColor

view.layer.addSublayer(layer)

extern是用来声明一个已经定义过的变量

这两个文件都是在声明变量,没有人定义变量,在链接的时候肯定报错:

//test.c 文件

static int a;
void test() {
printf(“test.c中的a为:%d”,a);
}
//main.c 文件

Extern int a;
extern是用来声明已经定义过而且能够访问的变量

虽然test.c中有定义过变量a,但是test.c中变量a的作用域是只限于test.c文件,main.c没有访问权限,所以main.c中的extern是废的。

链接的时候报错:标示符a未定义

相关文章

网友评论

      本文标题:贝塞尔曲线、extern

      本文链接:https://www.haomeiwen.com/subject/jamumhtx.html