Я представляю UIImagePickerController
, чтобы выбрать изображение. Мой код прост:
private lazy var imagePicker: UIImagePickerController = {
let picker = UIImagePickerController()
picker.navigationBar.isTranslucent = false
return picker
}()
func presentPicker() {
imagePicker.sourceType = .photoLibrary
imagePicker.modalPresentationStyle = .fullScreen
present(self.imagePicker, animated: true, completion: nil)
}
Я устанавливаю picker.navigationBar.isTranslucent = false
, чтобы иметь непрозрачную панель навигации в контроллере сборщика. К сожалению, это не работает на iOS 13, и навигация и строки состояния прозрачны.
Частичное решение :
private func setOpaqueNavigationiOS13() {
UINavigationBar.appearance().backgroundColor = .white
}
private func resetNavigationiOS13() {
UINavigationBar.appearance().backgroundColor = .clear
}
Я вызываю вышеупомянутые функции, чтобы сделатьПанель навигации непрозрачна и позволяет сбросить ее при увольнении сборщика. Это делает панель навигации непрозрачной, но строка состояния прозрачной. Я могу реализовать хак, чтобы сделать строку состояния непрозрачной, но, думаю, должно быть более простое решение.
РЕДАКТИРОВАТЬ : я также попытался настроить внешний вид панели навигации с помощью новогоUINavigationBarAppearance:
if #available(iOS 13.0, *) {
let appearance = UINavigationBarAppearance()
appearance.configureWithOpaqueBackground()
appearance.backgroundColor = .white
UINavigationBar.appearance().standardAppearance = appearance
UINavigationBar.appearance().compactAppearance = appearance
UINavigationBar.appearance().scrollEdgeAppearance = appearance
}
Или:
if #available(iOS 13.0, *) {
let appearance = UINavigationBarAppearance()
appearance.configureWithOpaqueBackground()
appearance.backgroundColor = .white
imagePicker.navigationBar.standardAppearance = appearance
imagePicker.navigationBar.compactAppearance = appearance
imagePicker.navigationBar.scrollEdgeAppearance = appearance
}
Кто-нибудь, кто придумал исправление? Спасибо