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

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

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

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

Q&A

解決済

1回答

734閲覧

【swift5】drawで四角形を描画するが、白く変色してしまう。

pythonlove

総合スコア13

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

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

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

0グッド

0クリップ

投稿2020/11/10 14:13

やりたいこと

四角形を描画して、その色を継続して表示したい。
しかし、別のアプリに移動した後に戻ってくると色が白く変色してしまう。

ソースコード

環境
Xcode12
swift5

swift

1//ViewController.swift 2import UIKit 3 4class ViewController: UIViewController { 5 6 override func viewDidLoad() { 7 super.viewDidLoad() 8 // Do any additional setup after loading the view. 9 let drawzone = Draw(frame:CGRect(x:100,y:100,width:100,height:100)) 10 11 self.view.addSubview(drawzone) 12 } 13}

Swift

1//Draw.swift 2import UIKit 3 4class Draw: UIView { 5 override func draw(_ rect: CGRect) { 6 //四角形 7 let rectangle = UIBezierPath(rect: CGRect(x: 0, y: 0, width: 100, height: 100)) 8 UIColor(red: 0.5, green: 0.5, blue: 0.5, alpha: 0.3).setFill() 9 rectangle.fill() 10 UIColor(red: 0.05, green: 0.05, blue: 0.05, alpha:0.5).setStroke() 11 rectangle.lineWidth = 2.0 12 rectangle.stroke() 13 14 } 15}

スクリーンショット

iPhone8で検証

起動時
起動時
戻ってきた時
戻ってきた時

よろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

viewDidLoadが複数回呼ばれているため、Drawのインスタンスが複数作られ、それが重なって表示されています。Drawが半透明なので、重なると白っぽくなります。

[UIKit]ViewDidLoad は一度しか呼ばれないと思っていました…

viewDidLoadが複数回呼ばれる事があるのは、iOSの仕様です。
私も誤解していた時期がありました:)

投稿2020/11/10 14:24

eytyet

総合スコア803

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

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

pythonlove

2020/11/10 22:44

ViewDidLoadは複数回呼ばれる可能性があるのですね。 既にDrawしてあるか確認して対処したいと思います。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問