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

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

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

Q&A

解決済

1回答

713閲覧

SwiftUIのButtonを押した後画像を出現させる方法

kaikaikyou

総合スコア5

0グッド

0クリップ

投稿2020/08/23 02:00

Buttonを押した後if文でpass1とpass2が一致した場合のみその下にある画像のopacityを1.oにしたいのですが、表示されません。
特段opacityにこだっている訳ではないので、ボタンを押した時に画像が出現する方法を教えていただけると幸いです。

以下コードです。

import SwiftUI

struct ContentView:View {
@State var msg = "name:"
@State var msg1 = "pass:"
@State var pass = ""
@State var pass1 = ""
@State var pass2 = ""
@State var p:Image = Image("photo")

var body: some View { VStack { Text(self.msg).font(.largeTitle) Text(self.msg1).font(.largeTitle) Spacer() TextField("name",text:$pass,onCommit: { self.msg = "name:(self.pass)" }).autocapitalization(.none).border(Color.white) SecureField("pass",text:$pass1,onCommit: { self.msg1 = "pass:(self.pass1)" }).autocapitalization(.none).border(Color.white) SecureField("Check pass",text: $pass2).autocapitalization(.none).border(Color.white) Button(action:{ if self.pass1 == self.pass2 { } },label:{ Text("JJJ") }) Spacer(minLength: 100).fixedSize() self.p.resizable().frame(width:250,height:200).opacity(0) Spacer() } .frame(maxWidth: .infinity,maxHeight: .infinity).background(Color.orange) }

}

struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}

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

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

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

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

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

guest

回答1

0

ベストアンサー

こちらのコードでいかがでしょうか?

swift

1import SwiftUI 2 3struct SamplePasswordCheckView: View { 4 @State var msg1 = "name:" 5 @State var msg2 = "pass:" 6 7 @State var name = "" 8 @State var pass1 = "" 9 @State var pass2 = "" 10 11 @State var checked = false 12 13 @State var photoImage = UIImage(named: "dummy_green") 14 15 var body: some View { 16 VStack { 17 18 Text(self.msg1) 19 .font(.largeTitle) 20 Text(self.msg2) 21 .font(.largeTitle) 22 23 Spacer() 24 25 TextField("name",text: $name, onCommit: { 26 self.msg1 = "name: (self.name)" 27 }) 28 .autocapitalization(.none) 29 .border(Color.white) 30 31 SecureField("pass",text: $pass1, onCommit: { 32 self.msg2 = "pass: (self.pass1)" 33 }) 34 .autocapitalization(.none) 35 .border(Color.white) 36 37 SecureField("Check pass", text: $pass2) 38 .autocapitalization(.none) 39 .border(Color.white) 40 41 Button(action:{ 42 if (self.pass1.isEmpty || self.pass2.isEmpty) { 43 self.checked = false 44 return 45 } 46 self.checked = (self.pass1 == self.pass2) 47 }, label:{ 48 Text("チェックする") 49 }) 50 51 Spacer(minLength: 100).fixedSize() 52 53 if checked { 54 Image(uiImage: photoImage!) 55 .resizable() 56 .frame(width:250, height:200) 57 } else { 58 Rectangle() 59 .fill(Color.gray) 60 .frame(width:250, height:200) 61 } 62 63 Spacer() 64 65 } 66 .frame(maxWidth: .infinity, maxHeight: .infinity) 67 .background(Color.orange) 68 } 69}

実行後のイメージは下図の通りです。

イメージ説明

投稿2020/08/24 07:09

ch3cooh

総合スコア287

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問