前提
navigation遷移した先のsettingviewで設定した写真を渡して
元の画面に表示するコードを書いています。
実現したいこと
imageviewの向きを元の画像のままに固定したいです。
発生している問題・エラーメッセージ
settingviewで設定する際は問題ないのですが、
confirmボタンを押して元の画面に戻ると、このように上下反転したり横向きになったりします。
画面の向きを元の画像のままに固定する、というようなメソッドなどあれば教えていただきたいです。
該当のソースコード
SettingView
import SwiftUI struct SettingView: View { @State private var profile_image = UIImage() @State private var is_show_photo_library = false @Environment(\.presentationMode) var presentationMode: Binding<PresentationMode> @State var onSwitch = false @Binding var bindImage: Data? var body: some View { VStack{ Form { VStack { Image(uiImage: self.profile_image) .resizable() .clipShape(Circle()) .overlay(Circle().stroke(Color.white, lineWidth: 2)) .frame(width: 100, height: 100) .shadow(radius: 5) .scaledToFill() .cornerRadius(75) HStack { Spacer() Button(action: { self.is_show_photo_library = true }, label: { Text("Please choose your profile photo") .padding() }) Spacer() } } .sheet(isPresented: $is_show_photo_library, content: { ImagePicker(sourceType: .photoLibrary, selectedImage: self.$profile_image) }) if (self.name.isEmpty){ Button(action: { }) { Text("confirm") .font(.title2) .padding(16) .foregroundColor(Color.white) .cornerRadius(10) }.disabled(self.name.isEmpty) } else { Button(action: { bindName = name bindType = "\(food_style)" bindImage = profile_image.pngData() UserDefaults.standard.set(self.bindName, forKey: "launchedName") UserDefaults.standard.set(self.bindImage, forKey: "launchedImage") self.onSwitch.toggle() self.presentationMode.wrappedValue.dismiss() }) { Text("confirm") .font(.title2) .padding(16) .background(Color(red: 82/225, green: 194/225, blue: 125/225)) .foregroundColor(Color.white) .cornerRadius(10) } } }.navigationTitle("Settings") } }
FirstView
import SwiftUI import UIKit import RiveRuntime struct FirstView: View { @State var showsheet: Bool = false @State var showinfo: Bool = false @Environment(\.isPresented) var isPresented @Environment(\.dismiss) var dismiss @AppStorage("IntegerKey") var day = "0" @AppStorage("launchedImage") var bindImage: Data? @State private var isShowSubView = false var body: some View { let bounds = UIScreen.main.bounds NavigationView{ ZStack{ Image("background") .ignoresSafeArea() .blur(radius: 30) ZStack { VStack { VStack(spacing: bounds.height / 70){ if let image = bindImage, let uiimage = UIImage(data: image){ Image(uiImage: uiimage) .resizable() .clipShape(Circle()) .overlay(Circle().stroke(Color.white, lineWidth: 2)) .frame(width: bounds.height / 7.5, height: bounds.height / 7.5) .shadow(radius: 5) .scaledToFill() .cornerRadius(75) } else { Image("") .resizable() .clipShape(Circle()) .overlay(Circle().stroke(Color.white, lineWidth: 2)) .frame(width: bounds.height / 7.5, height: bounds.height / 7.5) .shadow(radius: 5) .scaledToFill() .cornerRadius(75) } } } .frame(width: bounds.width / 1.2, height: bounds.height / 1.29) .offset(y: -20) .toolbar{ ToolbarItemGroup(placement: .navigationBarTrailing) { NavigationLink(destination: SettingView(bindName: $bindName, bindType: $bindType, bindImage: $bindImage)) { Label("Setting", systemImage: "gearshape") } } } .foregroundColor(.black) } .background(.white) .mask(RoundedRectangle(cornerRadius: 20, style: .continuous)) .shadow(color: .gray.opacity(0.3), radius: 5, x: 0, y: 0) .padding() .offset(y: -35) } } } } func passdate(date: Binding<Date>){ return }
補足情報(FW/ツールのバージョンなど)
macOS バージョン12.3.1
2.6 GHz 6コアIntel Core i7
Xcodeバージョン14.0.1
0 コメント