Sangat mudah untuk menggambar garis putus - putus dengan UIKit. Begitu:
CGFloat dashes[] = {4, 2};
[path setLineDash:dashes count:2 phase:0];
[path stroke];
Apakah ada cara untuk menggambar garis putus-putus yang asli?
Ada ide?
Karena pertanyaan ini benar-benar tua dan tidak ada yang dimasukkan secara lengkap @IBDesignable
solusi , ini dia ...
Semoga ini menghemat waktu mengetik seseorang.
@IBDesignable class DottedVertical: UIView {
@IBInspectable var dotColor: UIColor = UIColor.etc
@IBInspectable var lowerHalfOnly: Bool = false
override func draw(_ rect: CGRect) {
// say you want 8 dots, with perfect fenceposting:
let totalCount = 8 + 8 - 1
let fullHeight = bounds.size.height
let width = bounds.size.width
let itemLength = fullHeight / CGFloat(totalCount)
let path = UIBezierPath()
let beginFromTop = CGFloat(0.0)
let top = CGPoint(x: width/2, y: beginFromTop)
let bottom = CGPoint(x: width/2, y: fullHeight)
path.move(to: top)
path.addLine(to: bottom)
path.lineWidth = width
let dashes: [CGFloat] = [itemLength, itemLength]
path.setLineDash(dashes, count: dashes.count, phase: 0)
// for ROUNDED dots, simply change to....
//let dashes: [CGFloat] = [0.0, itemLength * 2.0]
//path.lineCapStyle = CGLineCap.round
dotColor.setStroke()
path.stroke()
}
}
Saya membuatnya vertikal, Anda dapat dengan mudah mengubahnya.
Taruh saja UIView di tempat kejadian; buat lebar apa pun yang Anda inginkan dan itu akan menjadi lebar garis putus-putus.
Cukup ubah kelas menjadi DottedVertical
dan Anda selesai. Ini akan ditampilkan seperti itu dengan benar di storyboard.
Perhatikan bahwa kode contoh yang diberikan untuk tinggi blok ("totalCount" dan seterusnya ...) menghasilkan blok dengan sempurna, ke piksel, cocok dengan ujung UIView yang membuat garis.
Pastikan untuk mencentang jawaban RobMayoff di bawah ini yang memberikan dua baris kode yang diperlukan untuk titik-bukan-blok.