【发布时间】:2016-02-20 00:00:41
【问题描述】:
我需要一个自定义的 MKOverlay 笔触样式。 我需要在覆盖层内部使用更宽更浅的颜色,就像这个中风一样。
我知道怎么画成这样,
class PolygonRenderer:MKPolygonRenderer {
override func drawMapRect(mapRect: MKMapRect, zoomScale: MKZoomScale, inContext context: CGContext) {
let fullPath = CGPathCreateMutable()
for i in 0 ..< self.polygon.pointCount {
let point = self.pointForMapPoint(self.polygon.points()[i])
print(point)
if i == 0 {
CGPathMoveToPoint(fullPath, nil, point.x, point.y)
} else {
CGPathAddLineToPoint(fullPath, nil, point.x, point.y)
}
}
let baseWidth = 10 / zoomScale
CGContextAddPath(context, self.path)
CGContextSetStrokeColorWithColor(context, UIColor.blueColor().colorWithAlphaComponent(0.3).CGColor)
CGContextSetLineWidth(context, baseWidth * 2)
CGContextSetLineCap(context, self.lineCap)
CGContextStrokePath(context);
CGContextAddPath(context, self.path)
CGContextSetStrokeColorWithColor(context, UIColor.blueColor().CGColor)
CGContextSetLineWidth(context, baseWidth)
CGContextSetLineCap(context, self.lineCap)
CGContextStrokePath(context)
}
}
是否可以像第一张图片一样绘制路径?
【问题讨论】:
-
是的,只需并排画两笔即可。
-
你会如何使用 MKOverlay 来做到这一点?
-
子类
MKOverlayRenderer并自己绘制...喜欢吗?在绘制较暗的线之前将上下文向下移动 lineWidth ? -
你打算怎么做?我似乎无法让它与 CGAfflineTransform 或 CGAfflineScale 一起使用。有没有别的办法。
-
CGAffineTransform 应该可以正常工作,我只是不确定参数,因为我有一段时间没有做 Core Graphics 的事情了。
标签: swift dictionary overlay cgpath