質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

1回答

1380閲覧

【Swift4】draw関数コードを使って、動く円を実装したい!

weekplane

総合スコア29

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2019/05/28 18:39

###やってみたいこと
このdraw関数で描画した紫のボールを1秒ごとに右にずらしていくコード(Javaでいうバウンドするボール的なアレ)をSwiftで実装しています。

イメージ説明

draw関数でボールを描画して、while文で円の更新をしていくコードを描きたいのですが、
下記のコードを書くと、printコンソールの結果が

150 151 152 ... (以下略)

と表示されるのですが、円は表示されず画面が白紙のままです。

ViewController.swift

1import UIKit 2 3var x: Int = 150 4var y: Int = 150 5 6class DrawView: UIView { 7 8 override init(frame: CGRect) { 9 super.init(frame: frame) 10 self.backgroundColor = UIColor.clear 11 } 12 13 required init?(coder aDecoder: NSCoder) { 14 fatalError("init(coder:) has not been implemented") 15 } 16 17 override func draw(_ rect: CGRect) { 18 19 print(x) 20 21 while x > 0 { 22 23 let circle = UIBezierPath(arcCenter: CGPoint(x:x, y:y), radius: 10, startAngle: 0, endAngle: CGFloat(Double.pi)*2, clockwise: true) 24 UIColor(red: 0, green: 0, blue: 1, alpha: 0.3).setFill() 25 circle.fill() 26 27 x = x+1 28 print(x) 29 sleep(1) 30 31 } 32 33 } 34 35} 36 37class ViewController: UIViewController { 38 39 override func viewDidLoad() { 40 super.viewDidLoad() 41 42 let drawView = DrawView(frame: self.view.bounds) 43 self.view.addSubview(drawView) 44 45 } 46 47} 48

###教えていただきたいこと

① 処理を実装するにはどうしたらいいか
② draw関数のコードは一度しか呼ばれないのか
③ circleがlet関数だからそもそもいくつも円を描画するのは無理なのか

どれか一つでもいいので、教えていただけると幸いです。
よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

普通にwhile文の基礎がわかっていなかっただけだった。

while x < 180{ //ここを変える。180は適当に設定した //省略 }

投稿2019/05/29 05:15

weekplane

総合スコア29

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

weekplane

2019/05/29 05:19

というより、こんな回りくどいことしなくても、SpriteKitとかSinceKit使えば一発。 寝不足すぎて判断力鈍ってた昨日の自分を殴りたい
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問