![](/img/trans.png)
[英]How to draw a circle using CAShapeLayer to be centered in a custom UIView in swift programmatically
[英]How to draw to CAShapeLayer in a UIView independently?
我继续在这里盯着我的Swift作业(之前的Stack Overflow问题)。 但是我现在面临一个新问题。 最后,我可以使用下面的代码(借助于@ njuri )使用UIBezierPath
和CAShapeLayer
在我的河流图像上绘制点:
import UIKit
let beginPoint = UIBezierPath(ovalInRect: CGRectMake(130, 360, 20, 20))
let endPoint = UIBezierPath(ovalInRect: CGRectMake(260, 57, 20, 20))
let drawingView = UIView.init(frame: CGRect(x: 0, y: 0, width: 640, height: 400))
drawingView.addSubview(UIImageView(image: UIImage(named: "River.jpeg")))
let drawingLayer = CAShapeLayer()
drawingLayer.path = beginPoint.CGPath
drawingLayer.strokeColor = UIColor.greenColor().CGColor
drawingLayer.lineWidth = 3
drawingLayer.fillColor = UIColor.whiteColor().CGColor
drawingView.layer.addSublayer(drawingLayer)
let drawingLayer2 = CAShapeLayer()
drawingLayer2.path = endPoint.CGPath
drawingLayer.strokeColor = UIColor.redColor().CGColor
drawingLayer.lineWidth = 3
drawingLayer.fillColor = UIColor.whiteColor().CGColor
drawingView.layer.addSublayer(drawingLayer2)
这里的问题是结果不是我预期的那样,正如您在下面看到的,我的确有两个点,但是一个都是黑色的(而不是红色边框和白色填充),另一个是绿色边框的并有白色填充(如我所愿)
但是, 为什么会这样呢? 根据代码,我在这里有两个单独的CAShapeLayer
,它们具有不同的属性,分别添加到UIView中
好像您已复制/粘贴并忘记将drawingLayer
重命名为drawingLayer2
let drawingLayer2 = CAShapeLayer()
drawingLayer2.path = endPoint.CGPath
drawingLayer2.strokeColor = UIColor.redColor().CGColor
drawingLayer2.lineWidth = 3
drawingLayer2.fillColor = UIColor.whiteColor().CGColor
因此, drawingLayer2
仅使用strokeColor
, lineWidth
和fillColor
默认值
您可以创建一个函数来简化代码。 而不是复制和粘贴,这容易出错。
func addDotWithPath(path: UIBezierPath) -> CAShapeLayer {
let drawingLayer = CAShapeLayer()
drawingLayer.path = path.CGPath
drawingLayer.strokeColor = UIColor.greenColor().CGColor
drawingLayer.lineWidth = 3
drawingLayer.fillColor = UIColor.whiteColor().CGColor
return drawingLayer
}
drawingView.layer.addSublayer(addDotWithPath(beginPoint))
drawingView.layer.addSublayer(addDitWithPath(endPoint))
let drawingLayer2 = CAShapeLayer()
drawingLayer2.path = endPoint.CGPath
drawingLayer.strokeColor = UIColor.redColor().CGColor
drawingLayer.lineWidth = 3
drawingLayer.fillColor = UIColor.whiteColor().CGColor
您只是忘记了一些绘画图层2
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.