我是新來的代碼,我試圖實現類似的提醒應用:如何刷新MKOverlayRenderer當MapView的變化
我已經跟着另一個answer意識到這一點,並
這裏我的代碼:
在我的ViewController:
var circle = MKCircle(centerCoordinate: location.coordinate, radius: 100)
self.mapView.addOverlay(circle)
在我的MKMapView:
func mapView(mapView: MKMapView!, rendererForOverlay overlay: MKOverlay!) -> MKOverlayRenderer! {
if overlay is MKCircle
{
render = MapFillRenderer(overlay: overlay)
return render
} else {
return nil
}
}
而且MapFillRenderer(MKOverlayRenderer的子類):
class MapFillRenderer: MKOverlayRenderer {
var colorIn: UIColor
var colorOut: UIColor
override func drawMapRect(mapRect: MKMapRect, zoomScale: MKZoomScale, inContext context: CGContext!) {
// Fill full map rect with some color.
var rect = self.rectForMapRect(mapRect)
CGContextSaveGState(context);
CGContextAddRect(context, rect);
CGContextSetFillColorWithColor(context, colorOut.CGColor)
CGContextFillRect(context, rect);
CGContextRestoreGState(context);
// Clip rounded hole.
CGContextSaveGState(context);
CGContextSetFillColorWithColor(context, colorIn.CGColor);
CGContextSetBlendMode(context, kCGBlendModeClear);
CGContextFillEllipseInRect(context, self.rectForMapRect(self.overlay.boundingMapRect))
CGContextRestoreGState(context);
// Draw circle
super.drawMapRect(mapRect, zoomScale: zoomScale, inContext: context)
}
}
問題:
但是我有一個問題,當用戶移動地圖時,主掩碼不會刷新,並且不會填充所有地圖區域。 值得注意的是,它刷新,但只有當我縮小足夠。 如何在用戶移動地圖時強制刷新而不縮小? 我已經嘗試,但它失敗:
func mapView(mapView: MKMapView!, regionDidChangeAnimated animated: Bool) {
if render.overlay != nil {
render.setNeedsDisplay()
}
}
感謝您的任何想法,
這裏結果的圖像時,用戶移動地圖,而縮放:
注意:提醒Apple應用程序,當您爲位置添加提醒時,具有相同的錯誤 – grominet