Почему .fullScreencover имеет прозрачный фон и игнорирует безопасную область, когда представлена после выбора фотопикераIOS

Программируем под IOS
Ответить
Anonymous
 Почему .fullScreencover имеет прозрачный фон и игнорирует безопасную область, когда представлена после выбора фотопикера

Сообщение Anonymous »

В моем приложении у меня есть Photospicker , который позволяет пользователю выбирать изображение, а затем изображение отображается на появлении .fullScreenCover . Вот код: < /p>

Код: Выделить всё

import SwiftUI
import PhotosUI

struct HomeView: View {
@State private var documentViewIsPresented = false
@State private var photosPickerIsPresented = false
@State private var selectedPhotosPickerItem: PhotosPickerItem?
@State private var selectedPhotosPickerItemData: Data?

var body: some View {
ZStack {
Color.green.ignoresSafeArea()

VStack {
Button("Add Image") {
photosPickerIsPresented = true
}
}
.photosPicker(isPresented: $photosPickerIsPresented,
selection: $selectedPhotosPickerItem,
matching: .images)
.onChange(of: selectedPhotosPickerItem) {
if let selectedPhotosPickerItem = selectedPhotosPickerItem {
Task {
if let data = try? await selectedPhotosPickerItem.loadTransferable(type: Data.self) {
selectedPhotosPickerItemData = data
}
}
}
}
.onChange(of: selectedPhotosPickerItemData) {
if selectedPhotosPickerItemData != nil {
documentViewIsPresented = true
}
}
.fullScreenCover(isPresented: $documentViewIsPresented) {
if let selectedPhotosPickerItemData = selectedPhotosPickerItemData {
DocumentView(data: selectedPhotosPickerItemData)
}
}
}
}
}

struct DocumentView: View {
private(set) var data: Data
@Environment(\.dismiss) private var dismiss

var body: some View {
VStack {
if let image = UIImage(data: data) {
Image(uiImage: image)
.resizable()
.aspectRatio(contentMode: .fit)
}

HStack {
Spacer()
Button("Close") {
dismiss()
}
Spacer()
}
}
}
}
Проблема, которая у меня есть, заключается в том, что когда появляется. Фон должен быть белым по умолчанию.
Я мог бы просто сделать обходной путь и обернуть документ, в zstack и установить его фон на белый, но другая вещь, которую я заметил, это то, что он не форматирует правильно в безопасных областях (если вы выберете каверновое изображение водяного потока на симуляторе, не имеет большого высокого высота, не наносит на кноп. внизу). И мне нужно извлечь объект данных из Photospicker и передать его в DocumentView (вместо просто изображение ), потому что в моем приложении документ -проведи>

Подробнее здесь: https://stackoverflow.com/questions/797 ... -area-when
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»