私はすぐに詰まっているように見えるようにしようとしています。 誰かが{ didSet { setNeedsDisplay() } }
がうまくいかない理由を指摘できますか? 目標は、ユーザーがここ をタップ小さな円を描くようにあることは私のコントローラである:あなたの回答を楽しみにしていスイフト(GRect)を複数回コールすることを管理していない
import UIKit
class PointsAndLinesView: UIView {
var point = CGPoint(){ didSet{ setNeedsDisplay() } }
private func addCirclePoint()->UIBezierPath{
let circlePoint = UIBezierPath(arcCenter: point, radius: 5.0, startAngle: 0, endAngle: 2 * CGFloat.pi, clockwise: true)
circlePoint.lineWidth = 4
print("Did I run?!")
return circlePoint
}
override func draw(_ rect: CGRect) {
UIColor.black.set()
addCirclePoint().stroke()
}
}
:
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var display: UIView!{
didSet{
display.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(addCirclePoint(byReactingTo:))))
}
}
let pointsAndLines = PointsAndLinesView()
func addCirclePoint(byReactingTo tapRecognizer: UITapGestureRecognizer){
let point = tapRecognizer.location(in: display)
pointsAndLines.point = point
}
}
そしてここでは、私の見解です。
EDIT:今後の参考のため
誰かがミスが、ディスプレイがPointsAndLinesViewのサブクラスであるとNOTのUIView
のとdisplay.pointが設定されるべきであることを、
だった、それを必要とする場合には。
私は間違っているかもしれませんが、 'setNeedsDisplay'は' bool'引数を取っていませんか? – Arc676
ブールは必要ありません。空の場合はビュー全体が無効になりますが、CGRectを渡してビューの領域を無効にすることができます。 –