14

以下のコードを使用すると、2 点間の線をかなり簡単に作成できます (とにかくその一部です)。線を実線ではなく点線にするにはどうすればよいですか? また、線が長いほど不透明度を変更することは可能でしょうか?

- (MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id < MKOverlay >)overlay
{
    MKPolylineRenderer *renderer =[[MKPolylineRenderer alloc] initWithPolyline:overlay];
    renderer.strokeColor = [UIColor orangeColor];
    renderer.lineWidth = 3.0;

    return renderer;
}
4

2 に答える 2

49

プロパティを使用しlineDashPatternて、線に必要なパターンを作成できます。

MKPolylineRendererは、そのプロパティと他のいくつかのプロパティを持つサブクラスですMKOverlayPathRenderer(ドキュメントへのリンクを参照してください)。

たとえば、これはパターンを長さ 2 ポイントの線に続いて 5 ポイントのギャップに設定します。ポリラインの全長にわたってパターンが繰り返されます。

renderer.lineDashPattern = @[@2, @5];


不透明度については、次のいずれかにアルファを適用できますstrokeColor

renderer.strokeColor = [[UIColor orangeColor] colorWithAlphaComponent:0.5];

またはalphaプロパティを設定します。

renderer.alpha = 0.5;

質問の一部である「行が長いほど」とはどういう意味かわかりません。

于 2013-12-13T18:10:30.823 に答える
6

スウィフトで答える

func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer {
    guard let polyline = overlay as? MKPolyline else {
        fatalError("Not a MKPolyline")
    }

    let renderer = MKPolylineRenderer(polyline: polyline)

    renderer.strokeColor = #colorLiteral(red: 0.1764705926, green: 0.4980392158, blue: 0.7568627596, alpha: 1)
    renderer.lineWidth = 8
    renderer.lineDashPattern = [0, 10]

    return renderer
} 

ここに画像の説明を入力

于 2018-04-05T11:07:22.300 に答える