gpt4 book ai didi

Swift 无法多次调用 draw(GRect)

转载 作者:行者123 更新时间:2023-11-28 08:08:03 28 4
gpt4 key购买 nike

我正在尝试快速学习,但似乎我已经被卡住了。有人能指出为什么 { didSet { setNeedsDisplay() } } 似乎不起作用吗?!目标是在用户点击的地方画一个小圆圈这是我的 Controller :

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

}

}

这是我的观点:

 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()

}

期待您的回复。

编辑:

以备日后引用,以防有人需要,错误是,

显示是 PointsAndLinesView 的子类而不是 UIView 的子类

并且应该设置 display.point。

最佳答案

查看代码,您从未将 pointsAndLines 控件添加到 View 中,因此您永远不会看到它。您可以将它添加为主视图的 subview ,然后手动设置它的框架或使用自动布局来定位它。

关于Swift 无法多次调用 draw(GRect),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44544104/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com