所以我使用 PaintCode 来制作形状,我希望我的UIButton
具有这种形状。
我制作的形状在代码中如下所示:
let bezierPath = UIBezierPath()
bezierPath.moveToPoint(CGPoint(x: 81.5, y: 48.5))
bezierPath.addLineToPoint(CGPoint(x: 105.5, y: 24.5))
bezierPath.addLineToPoint(CGPoint(x: 129.5, y: 48.5))
bezierPath.addLineToPoint(CGPoint(x: 123.5, y: 48.5))
bezierPath.addLineToPoint(CGPoint(x: 105.5, y: 30.5))
bezierPath.addLineToPoint(CGPoint(x: 87.5, y: 48.5))
bezierPath.addLineToPoint(CGPoint(x: 81.5, y: 48.5))
bezierPath.closePath()
UIColor.whiteColor().setFill()
bezierPath.fill()
UIColor.blackColor().setStroke()
bezierPath.lineWidth = 1
bezierPath.stroke()
我在UIButton
设置了cellForItemAtIndexPath
图层,但是如何制作我在按钮上制作的图形呢?
答案 0 :(得分:1)
要做你想做的事,你必须通过右键单击并选择“新建文件”来创建一个新的CocoaTouchClass,它是UIButton的子类。进入该文件后,必须覆盖一个名为drawRect的函数。这就是您的文件应该是什么样的 -
import UIKit
class BezierButtonDrawing: UIButton {
override func drawRect (rect: CGRect) {
//your code from PaintCode goes here
}
}
之后你要做的就是去Main.storyboard,点击你的按钮,然后将它的类从Identity Inspector设置为“BezierButtonDrawing”或你命名的任何类。
如果您的应用中有多种形状,您可以简单地执行RichardG建议的操作。这是快速翻译 -
首先在你的课堂中声明这个(不是在viewDidLoad中)
var shapeLayer = CAShapeLayer()
接下来,这是您在viewDidLoad
-
self.shapeLayer.lineWidth = 5.0
self.shapeLayer.fillColor = UIColor.blackColor().CGColor
self.shapeLayer.path = bezierPath.CGPath
self.shapeLayer.strokeColor = UIColor.blackColor().CGColor
self.yourButton.layer.addSublayer(shapeLayer)
就是这样。只需构建并运行,您就拥有了自己想要的东西:)
答案 1 :(得分:0)
您可以在图层中添加路径。 (此处shapeLayer
声明为属性。)
if (self.shapeLayer != nil) {
[self.shapeLayer removeFromSuperlayer];
self.shapeLayer = nil;
}
_shapeLayer = [CAShapeLayer layer];
self.shapeLayer.lineWidth = 5.0;
self.shapeLayer.fillColor = [UIColor clearColor].CGColor;
self.shapeLayer.path = bezierPath.CGPath;
self.shapeLayer.strokeColor = strokeColor.CGColor;
[[self.button layer] addSublayer:self.shapeLayer];