1. ホーム
  2. ios

[解決済み] 点線(破線ではありません!)を描く、2017年のIBDesignableで

2023-04-29 04:03:51

質問

を描くのは簡単です。 ダッシュ の線を描くのも簡単です。そこで

CGFloat dashes[] = {4, 2};
[path setLineDash:dashes count:2 phase:0];
[path stroke];

<イグ

本物の点線を引く方法はないのでしょうか?

どのように解決するのですか?

ラインキャップのスタイルをラウンドに設定し、「オン」の長さを小さな数字に設定します。

Swiftのプレイグラウンドの例です。

import UIKit
import PlaygroundSupport

let path = UIBezierPath()
path.move(to: CGPoint(x:10,y:10))
path.addLine(to: CGPoint(x:290,y:10))
path.lineWidth = 8

let dashes: [CGFloat] = [0.001, path.lineWidth * 2]
path.setLineDash(dashes, count: dashes.count, phase: 0)
path.lineCapStyle = CGLineCap.round

UIGraphicsBeginImageContextWithOptions(CGSize(width:300, height:20), false, 2)

UIColor.white.setFill()
UIGraphicsGetCurrentContext()!.fill(.infinite)

UIColor.black.setStroke()
path.stroke()

let image = UIGraphicsGetImageFromCurrentImageContext()
let view = UIImageView(image: image)
PlaygroundPage.current.liveView = view

UIGraphicsEndImageContext()

結果


objective-Cの場合、質問と同じサンプルクラスを使って、単純に

CGContextSetLineCap(cx, kCGLineCapRound);

の呼び出しの前に CGContextStrokePath を変更し、さらに ra の配列の値を私のSwiftコードと一致するように変更してください。