Добро пожаловать в StackOverflow!
Самый простой способ сделать это - сохранить образ на диск после его выбора и восстановить его при загрузке ViewController
.
Сохранитьизображение, используйте FileManager
и сохраните в хранилище документов приложения:
/// Saves a background image to disk
/// - Parameter image: The background image to save to disk
/// - Returns: true if successful, false otherwise
func saveBackgroundImage(image: UIImage) -> Bool {
// make sure that the image can be transformed into data (assuming PNG)
guard let data = image.pngData() ?? imageView.image?.pngData() else {
return false
}
// ensure that you can write to the document director
guard let directory = FileManager.default.urls(for: .documentDirectory,
in: .userDomainMask).first else {
return false
}
// write the file
do {
try data.write(to: directory.appendingPathComponent("backgroundImage.png")!)
return true
} catch {
print(error.localizedDescription)
return false
}
}
Теперь вам нужен способ получить файл:
/// Retrieves the saved background image
/// - Returns: The background image from disk if it exists, or nil
func getSavedBackgroundImage() -> UIImage? {
if let dir = FileManager.default.urls(for: .documentDirectory,
in: .userDomainMask).first {
return UIImage(contentsOfFile: URL(fileURLWithPath: dir.absoluteString).appendingPathComponent("backgroundImage.png").path)
}
return nil
}
Внутри вашего imagePickerController(picker: didFinishPickingMediaWithInfo:)
метода, когда вы устанавливаете изображение на imageView
, сохраните фоновое изображение, вызвав self.saveBackgroundImage(image: image)
.Если вы не проверяете логическое значение, возвращаемое из saveBackgroundImage(image:)
, то вызовите его следующим образом:
let _ = self.saveBackgroundImage(image: image)
, чтобы предотвратить предупреждение "Result unused".
Теперь реализуйте ваш viewDidLoad
, где вы попытаетесь загрузить изображение:
override func viewDidLoad() {
super.viewDidLoad()
if let backgroundImage = self.getSavedBackgroundImage() {
// set the background image on the `imageView`
self.imageView.image = backgroundImage
}
}