Я в тупике и надеюсь, что кто-нибудь может дать мне немного крошек для исследования. Я искал, но не смог найти тот же вопрос, поэтому прошу прощения, если он был задан и получен ответ.
У меня есть простое приложение, где пользователь может загружать фотографии в сообщение на Parse-Server, используя:
@IBAction func SelectImage(_ sender: Any) {
let imagePicker = UIImagePickerController()
imagePicker.delegate = self
imagePicker.sourceType = UIImagePickerControllerSourceType.photoLibrary
imagePicker.allowsEditing = false
self.present(imagePicker, animated: true, completion: nil)
}
Если это первое изображение, я устанавливаю UIImageView для выбранного изображения и добавляю его в массив PFFiles. Если это не первый, я просто добавляю его в массив. Затем я установил представление коллекции, чтобы показать все изображения в массиве PFFile.
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
if let image = info[UIImagePickerControllerOriginalImage] as? UIImage {
if !image1Set {
blipImage.image = image
imagePicked = true
image1Set = true
} else if !image2Set {
image2Set = true
} else if !image3Set {
image3Set = true
}
// Build an array of the files for the blip
if let imageData = UIImagePNGRepresentation(image) {
if let blipFile = PFFile(name: "image.png", data: imageData) {
newBlipFiles.append(blipFile)
blipFiles.append(blipFile)
}
}
blipFileCollectionView.reloadData()
}
dismiss(animated: true, completion: nil)
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let cell:BlipMainCell = collectionView.dequeueReusableCell(withReuseIdentifier: "fileCell", for: indexPath) as! BlipMainCell
blipFiles[indexPath.row].getDataInBackground { (data, error) in
if let imageData = data {
if let imageToDisplay = UIImage(data: imageData) {
cell.image.image = imageToDisplay
}
}
}
return cell
}
Когда я запускаю это на симуляторе, все выглядит нормально. Когда я проверяю это на телефоне, хотя фотография в виде коллекции переворачивает ее на бок. Как только фотография считывается на сервер и ранее загруженное изображение добавляется в тот же контроллер представления, изображение переворачивается на представление коллекции И в UIImageView, который первоначально показывал его правильно. Когда изображение извлекается с сервера и используется в качестве значка в табличном представлении, оно также переворачивается.
Моя гипотеза состоит в том, что что-то происходит, когда изображение преобразуется в данные с использованием UIImagePNGRepresentation (изображение), так что ориентация удаляется. Это объясняет, почему все время его чтение в виде PFFile переворачивается, но не при первоначальной настройке, но когда он запускает тот же UIImageView, который был в порядке, он переворачивается.
Может кто-нибудь помочь мне понять это? В глубине души я надеюсь, что это так же просто, как добавить некий аргумент в кодировку данных PFFile, чтобы UIImagePNGRepresentation (изображение) сохранял правильную ориентацию. Хотя это очень расстраивает, потому что я не могу иметь приложение, в котором ориентация не учитывает то, что ожидает пользователь, потому что это то, что они видят в своей камере.
Спасибо, Дэн