TableViewで5行のマイルストーンを描画しようとしています。セルに "O"というラベルを付けました。ここで行の高さは44で、これらのドットを接続しようとしています このように O ------ O ------ O ------ O ----- O垂直になりますが、ここで何が欠けているのか分かりません。次のコードを参照してください。TableviewでBezierPathを使用してタイムラインビューを作成する
class StopslistTableViewCell:UITableViewCell{
@IBOutlet weak var milestoneLbl: UILabel!
override func draw(_ rect: CGRect) {
let scrrenX = UIScreen.main.bounds.width - 30
let frametosuperview = milestoneLbl.convert(milestoneLbl!.frame, to: self.superview)
print("dotframetosuperview",frametosuperview)
//print(CGPoint(x: scrrenX, y: previousposY + rect.size.height))
//frametosuperview.origin.y > 40 ? frametosuperview.origin.y - 20 : frametosuperview.origin.y
let path = UIBezierPath()
path.move(to: CGPoint(x: scrrenX, y:frametosuperview.origin.y < 30 ? frametosuperview.origin.y : frametosuperview.origin.y - frametosuperview.height))
print("move to point--->",frametosuperview.origin.y < 30 ? frametosuperview.origin.y : frametosuperview.origin.y - frametosuperview.height)
path.addLine(to: CGPoint(x: scrrenX, y: frametosuperview.origin.y < 30 ? frametosuperview.height + 24 : (frametosuperview.origin.y + 24)))
print("add line to point--->",CGPoint(x: scrrenX, y: frametosuperview.origin.y < 30 ? frametosuperview.height + 24 : (frametosuperview.origin.y + 24)))
path.lineWidth = 5
UIColor.red.setStroke()
path.stroke()
setNeedsDisplay()
}
デバッグ出力
dotframetosuperview (560.0, 20.0, 20.0, 20.0)
move to point---> 20.0
add line to point---> (290.0, 44.0)
dotframetosuperview (560.0, 64.0, 20.0, 20.0)
move to point---> 44.0
add line to point---> (290.0, 88.0)
dotframetosuperview (560.0, 108.0, 20.0, 20.0)
move to point---> 88.0
add line to point---> (290.0, 132.0)
dotframetosuperview (560.0, 152.0, 20.0, 20.0)
move to point---> 132.0
add line to point---> (290.0, 176.0)
dotframetosuperview (560.0, 196.0, 20.0, 20.0)
move to point---> 176.0
add line to point---> (290.0, 220.0)
私はこの
ようなものが必要私はここに何かを逃していますか?あなたはUILabel
.Insteadは、円とのように破線のパターンとラインを作成作成する必要がいけない
の詳細情報を投稿してください。問題は "私は望ましい結果を得ることができません"とは何ですか?期待される出力、実際の出力... – shallowThought
詳細が必要な場合は、tableviewcellでコードをコピーし、xibでテーブルビューを取得し、セルをドラッグし、ラベルを貼り付け、マイルストーンにラベルを貼り付けて実行します。 – iSwift