UIView
という名前の "DrawableCanvas"というクラスがあるiOSアプリケーションをビルドします。このアイデアは、ユーザがストーリーボードのUIViewを描画して、自分が作成したクラスを拡張できるようにすることです。iOS Swift 3 - UIViewのクリア
この時点で、図面は細かく滑らかに動作します。ここで私が使用したコードだ:もちろん
class DrawableView: UIView {
let path=UIBezierPath()
var previousPoint:CGPoint
var lineWidth:CGFloat=1.0
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
override init(frame: CGRect) {
previousPoint=CGPoint.zero
super.init(frame: frame)
}
required init?(coder aDecoder: NSCoder) {
previousPoint=CGPoint.zero
super.init(coder: aDecoder)
let panGestureRecognizer=UIPanGestureRecognizer(target: self, action: #selector(pan))
panGestureRecognizer.maximumNumberOfTouches=1
self.addGestureRecognizer(panGestureRecognizer)
}
override func draw(_ rect: CGRect) {
// Drawing code
UIColor.black.setStroke()
path.stroke()
path.lineWidth=lineWidth
}
func pan(panGestureRecognizer:UIPanGestureRecognizer)->Void{
let currentPoint=panGestureRecognizer.location(in: self)
let midPoint=self.midPoint(p0: previousPoint, p1: currentPoint)
if panGestureRecognizer.state == .began{
path.move(to: currentPoint)
}
else if panGestureRecognizer.state == .changed{
path.addQuadCurve(to: midPoint,controlPoint: previousPoint)
}
previousPoint=currentPoint
self.setNeedsDisplay()
}
func midPoint(p0:CGPoint, p1:CGPoint)->CGPoint{
let x=(p0.x+p1.x)/2
let y=(p0.y+p1.y)/2
return CGPoint(x: x, y: y)
}
}
、私はボタンを押す上のビューをクリアする必要があり、そしてここに私のボタン押下アクションです:
@IBAction func reset1(_ sender: AnyObject) {
print("reset hit!")
sig1View.setNeedsLayout()
sig1View.setNeedsDisplay()
}
sig1View
は私がしようとしているビューがありますリセットする。
func reloadData() {
print("reload data hit")
self.setNeedsDisplay()
}
関数が呼ばれましたが、それはあまりにも、動作しませんでした:
この
は私が代わりにしようとしたDrawableView
クラスで
reloadData()
を書くことだったので、何を、うまくいきませんでした。
iOS Swift 3でUIViewをクリアまたはリセットするにはどうすればよいですか?そして鉛と助けは非常に高く評価されます。
あなたはview.layers.sublayersに層のための 'への呼び出しを行うでした{layer.removeFromSuperlayer()}'私は、描画パスを持つ多くの経験を持っていないが、それはどのような私です最初に試してみる –