【发布时间】:2015-12-11 19:42:20
【问题描述】:
我正在继续我的 Swift 作业,我一直盯着 here(上一个 StackOverflow 问题)。但我现在面临一个新问题。最后,我可以使用下面的代码使用UIBezierPath 和CAShapeLayer 在我的河流图像上画点(在@njuri 的帮助下):
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)
这里的问题是结果不是我预期的那样,正如你在下面看到的那样,我确实有两个点,但一个全黑(而不是红色边框和白色填充),另一个是绿色边框,填充白色(如我所愿)
但是,为什么会发生这种情况?根据代码,我在这里有两个单独的CAShapeLayers,它们具有不同的属性,我分别添加到 UIView 中
【问题讨论】:
-
这是一个常见的问题,当您复制粘贴一些重复的代码时,您会忘记重命名变量并且不会出现错误,因为副本变量在此范围内可用。有一个辅助函数可以让你的代码更安全、更简单。
标签: ios swift uibezierpath cashapelayer