b3f*_*f79 39 ios swift swift4 ios12
我试图将照片上传到Firebase,但它给了我这个错误.它在Xcode 10之前工作.我收到此错误:
'UIImageJPEGRepresentation'已被实例方法'UIImage.jpegData(compressionQuality :)'取代
我不知道如何使用这个功能.
import UIKit
import Firebase
class SignUpViewController:UIViewController {
@IBOutlet weak var profileImageView: UIImageView!
@IBOutlet weak var tapToChangeProfileButton: UIButton!
var continueButton:RoundedWhiteButton!
var imagePicker:UIImagePickerController!
override func viewDidLoad() {
super.viewDidLoad()
continueButton.addTarget(self, action: #selector(handleSignUp), for:
.touchUpInside)
let imageTap = UITapGestureRecognizer(target: self, action:
#selector(openImagePicker))
profileImageView.isUserInteractionEnabled = true
profileImageView.addGestureRecognizer(imageTap)
profileImageView.layer.cornerRadius = profileImageView.bounds.height / 2
profileImageView.clipsToBounds = true
imagePicker = UIImagePickerController()
imagePicker.allowsEditing = true
imagePicker.sourceType = .photoLibrary
imagePicker.delegate = self
}
func uploadProfileImage(_ image:UIImage, completion: @escaping ((_ url:URL?)->())) {
guard let uid = Auth.auth().currentUser?.uid else { return }
let storageRef = Storage.storage().reference().child("user/\(uid)")
guard let imageData = UIImageJPEGRepresentation(image, 0.75) else { return }
let metaData = StorageMetadata()
metaData.contentType = "image/jpg"
storageRef.putData(imageData, metadata: metaData) { metaData, error in
if error == nil, metaData != nil {
if let url = metaData?.downloadURL() {
completion(url)
} else {
completion(nil)
}
// success!
} else {
// failed
completion(nil)
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
rma*_*ddy 119
该错误告诉您,从iOS 12开始,旧UIImageJPEGRepresentation
功能已被替换为新jpegData
方法UIImage
.
更改:
let imageData = UIImageJPEGRepresentation(image, 0.75)
Run Code Online (Sandbox Code Playgroud)
至:
let imageData = image.jpegData(compressionQuality: 0.75)
Run Code Online (Sandbox Code Playgroud)
同样,使用UIImagePNGRepresentation
已被替换pngData()
.
小智 14
只需更换
guard let imageData = UIImageJPEGRepresentation(image, 0.75) else { return }
Run Code Online (Sandbox Code Playgroud)
有:
guard let imageData = image.jpegData(compressionQuality: 0.75) else { return }
Run Code Online (Sandbox Code Playgroud)
此错误发生在ios 12和Swift 4.2版本中。
let image = UIImage()
let imageData = UIImageJPEGRepresentation(image, 1)
to:
let image = UIImage()
let imageData = image.jpegData(compressionQuality: 0.50)
Run Code Online (Sandbox Code Playgroud)
你想这样改变。请尝试这个对我有用。
归档时间: |
|
查看次数: |
33317 次 |
最近记录: |