前提・実現したいこと
Xcodeの環境でswiftで線を描画しようとしています。
描画を行うクラスと、メインの処理を行うUIViewControllerを継承したクラスに分かれているのですが、メインの処理で取得したデータを座標として描画クラスに与えた時に直線が描画されません。
発生している問題・エラーメッセージ
エラーメッセージ 2018-0503 10:02:34.129144+0900 horse[4578:3641255] [Unknown process name] CGContextSetStrokeColorWithColor: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable. 2018-0503 10:02:34.130535+0900 horse[4578:3641255] [Unknown process name] CGContextSaveGState: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable. 2018-0503 10:02:34.130647+0900 horse[4578:3641255] [Unknown process name] CGContextSetLineWidth: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable. 2018-0503 10:02:34.130687+0900 horse[4578:3641255] [Unknown process name] CGContextSetLineJoin: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable. 2018-0503 10:02:34.130713+0900 horse[4578:3641255] [Unknown process name] CGContextSetLineCap: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable. 2018-0503 10:02:34.130738+0900 horse[4578:3641255] [Unknown process name] CGContextSetMiterLimit: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable. 2018-0503 10:02:34.130764+0900 horse[4578:3641255] [Unknown process name] CGContextSetFlatness: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable. 2018-0503 10:02:34.130803+0900 horse[4578:3641255] [Unknown process name] CGContextAddPath: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable. 2018-0503 10:02:34.130829+0900 horse[4578:3641255] [Unknown process name] CGContextDrawPathContextSetLineJoin: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable. 2018-0503 10:02:34.130854+0900 horse[4578:3641255] [Unknown process name] CGContextRestoreGState: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.
該当のソースコード
swift
1ソースコード 2import UIKit 3 4class ViewController: UIViewController { 5 let myView : MyView = MyView(frame:CGRect(x:0,y:0,width:300,height:500)) 6 7 override func viewDidLoad() { 8 super.viewDidLoad() 9 myView.isOpaque = false 10 myView.backgroundColor = UIColor.cler 11 view.addSubview(myView) 12 } 13 14 @IBAction func PushButton(_ sender:Any) { 15 var x,y,xx,yy:Int 16 x=100 17 y=100 18 xx=200 19 yy=200 20 // この描画が実行されずwarningが表示される 21 myView.draw_line(x1:x,y1:y,x2:xx,y2:yy) 22 } 23} 24class MyView:UIView { 25 // ここにx,y,xx,yyを引数として渡す方法があれば解決するのですが・・・ 26 override func draw(_ rect: CGRect) { 27 // この中に記述すれば問題なく描画される 28 draw_line(x1:300,y1:300,x2:400,y2:400) 29 } 30 // できないのでこちらの関数で描画したい 31 func draw_line(x1:Int,y1:Int,x2:Int,y2:Int) { 32 let path = UIBezierPath() 33 path.move(to:CGPoint(x:x1,y:y1)) 34 path.addLine(to:CGPoint(x:x2,y:y2)) 35 path.lineWidth = 2.0 36 UIColor.brown.setStroke() 37 path.stroke() 38 } 39}
試したこと
描画クラスMyViewを宣言する場所を変える、overrideのdraw関数の引数としてx1,y1,x2,x2を渡す等してみましたが、overrideされた形から変わってしまうためうまくいきませんでした。
補足情報(FW/ツールのバージョンなど)
仕様ツールはXcode version 9.3(9E145)です。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/05/03 12:53