这在某种程度上建立在question之前,但我正在制定一个解决方案,允许用户通过UIImagePickerController
从照片库中选择图像,如果是这样的话是一个具有透明度的.png,用于保持图像的透明度以便在UIImageView中显示。
我可以使用以下步骤不断复制我的问题;
-
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any]) {
if let pickedImage = info[UIImagePickerControllerOriginalImage] as? UIImage {
let png = UIImagePNGRepresentation(pickedImage)
let pngImage = UIImage(data: png!)
// TEST FILE TYPE
if let fileURL = info[UIImagePickerControllerImageURL] as? URL {
// CONSISTENTLY PRINTS PUBLIC.JPEG
print(fileURL.typeIdentifier)
}
}
}
无论出于何种原因,将图像导入照片的过程会导致iOS将图像看作JPEG而不是PNG,因此在UIImageView中测试时会失去透明度。文件名仍然是.png,但在应用程序中使用是不可行的。
顺便说一句,如果我将transparent.png带入我的Xcode项目,并将我的UIImageView设置为imageView.image = UIImage(named: "newTest.png")
,则透明度功能完全正常。
更新:这似乎是在iOS 11上无法重现的问题.SO和其他留言板上的其他用户已经确认了这种情况。目前,我建议的解决方法是识别从外部源下载透明PNG而不是从用户的照片库加载的解决方案。重启iOS设备似乎确实可以在一段不确定的时间内解决问题。
答案 0 :(得分:0)
确保iCloud Photo Library的optimize
设置已关闭:
在iPhone,iPad或iPod touch上:
- 点按设置> [你的名字]> iCloud中。如果您使用的是iOS 10.2或更早版本,请点按设置> icloud的。
- 点击照片。
- 选择优化[设备]存储。
醇>在Mac上:
- 打开照片应用,然后点击菜单栏中的照片。
- 点击偏好设置。
- 转到iCloud选项卡并选择存储设置。
醇>
如果已启用,则必须在关闭照片库后将其重新添加到照片库中,以保留原始照片。