removeFromSuperviewがうまく機能しない
import UIKit
class ViewController: UIViewController {
var onVLine: onVerticalLine!
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
override func touchesMoved(touches: Set<UITouch>, withEvent event: UIEvent?) {
onVLine = onVerticalLine(frame: CGRectZero)
self.view.addSubview(onVLine)
}
override func touchesEnded(touches: Set<UITouch>, withEvent event: UIEvent?) {
if(onVLine != nil){
self.onVLine.removeFromSuperview()
}
}
}
class onVerticalLine: UIView {
let _verticalLine: UIBezierPath = UIBezierPath()
override init(frame: CGRect) {
super.init(frame: frame)
print("onlineinited")
_verticalLine.removeAllPoints()
self.userInteractionEnabled = false;
self.backgroundColor = UIColor(white:1,alpha:0)
self.frame = CGRectMake(0, 0, UIScreen.mainScreen().bounds.width, UIScreen.mainScreen().bounds.width)
self.center = CGPointMake(UIScreen.mainScreen().bounds.width / 2, UIScreen.mainScreen().bounds.height / 2)
print("vertical",self.frame)
_verticalLine.lineWidth = 1
_verticalLine.moveToPoint(CGPointMake(frame.origin.x,0))
_verticalLine.addLineToPoint(CGPointMake(frame.origin.x, self.frame.origin.y + frame.height))
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
}
override func drawRect(rect: CGRect) {
print("onLinedrawRected")
UIColor.blueColor().setStroke()
_verticalLine.stroke()
}
}
上記のようなプログラムを組んでいます。
linesをViewControllerから消したいのですが、実行しても線が残ったままになってしまいます。
ちなみに、touchMovedにおいて
self.view.addSubview(onVLines)
self.onVLines.removeFromSuperView()
とするとうまく消えてくれます。
実行自体はされているようですがどうも画面に反映されません。
self.view.setNeedsDisplay()をしてみましたがそれも反応無しです。
どうぞよろしくお願い致します。