我对CALayer并不擅长,但我需要绘制一个加号(+),我不想使用图像,因为我想要为绘图设置动画。有什么帮助吗?
答案 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。它有方法moveToPoint
和addLineToPoint
。
您移动到加号的顶部,向下添加一行,然后移到加号的左侧并添加一条直线。
请注意,您还可以根据您所使用的动画类型为图像设置动画。你需要做什么样的动画?
答案 2 :(得分:0)
另一种简单的方法是使用具有相同背景颜色的两个UIView,并将它们作为子视图添加到另一个UIView。然后你可以使用UIView animateWithDuration:...方法来做简单的动画。