使用CALayer绘制加号(+)

时间:2016-05-27 14:31:28

标签: ios objective-c calayer

我对CALayer并不擅长,但我需要绘制一个加号(+),我不想使用图像,因为我想要为绘图设置动画。有什么帮助吗?

3 个答案:

答案 0 :(得分:5)

在所有下来的选票之后,我能够自己做到这一点。这是其他可能需要这个的人

CGFloat height = 2.f;
CGFloat width = 3.f;
CGFloat cornerRadius =  1.f;

CALayer *hLayer = [CALayer layer];//this is the left - right stroke 
hLayer.frame = CGRectMake(0, CGRectGetMidY(self.bounds)-(height/2), width, height);
hLayer.cornerRadius = cornerRadius;

CALayer *vLayer = [CALayer layer];// this is the top - bottom stroke
vLayer.frame = CGRectMake(CGRectGetMidX(self.bounds) - (height/2), -3,height, width);
vLayer.cornerRadius = cornerRadius;

[self.layer addSublayer:hLayer];
[self.layer addSublayer:vLayer];

答案 1 :(得分:2)

正如luk2302所说,使用CAShapeLayer

您可以将CGPath安装到CAShapeLayer。您可以从任何CGPath获得UIBezierPath。 (它具有CGPath属性,允许您访问任何UIBezierPath的基础CGPath对象。)

我建议阅读UIBezierPath。它有方法moveToPointaddLineToPoint

您移动到加号的顶部,向下添加一行,然后移到加号的左侧并添加一条直线。

请注意,您还可以根据您所使用的动画类型为图像设置动画。你需要做什么样的动画?

答案 2 :(得分:0)

另一种简单的方法是使用具有相同背景颜色的两个UIView,并将它们作为子视图添加到另一个UIView。然后你可以使用UIView animateWithDuration:...方法来做简单的动画。