swift - 尝试在 UIImageView 上使用 SDWebImage 扩展时出错

标签 swift uiimage sdwebimage

我一直在尝试在占位符中显示用户选择的个人资料图像。我成功地选择了图像,但正如前面提到的,它不会显示在我选择的占位符中。

我反复收到一条错误消息:

Value of type 'UIImageView' has no member 'sd_setImage'

我编写了以下代码。

screenshot of problem

class AddProfilePictureViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate {
    @IBOutlet weak var userProfileImageView: UIImageView!

    @IBAction func chooseFromLibraryButtonTapped(_ sender: Any) {
        let profileImagePicker = UIImagePickerController()
        profileImagePicker.sourceType = UIImagePickerControllerSourceType.photoLibrary
        profileImagePicker.mediaTypes = [kUTTypeImage as String]
        profileImagePicker.delegate = self
        present(profileImagePicker, animated: true, completion: nil)
    }

    func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : Any])
    {
        if let profileImage =
        info[UIImagePickerControllerOriginalImage] as? UIImage, let
        optimizedImageData = UIImageJPEGRepresentation(profileImage, 0.8) {
            // Upload image from here
            uploadProfileImageData(imgageData: optimizedImageData)
        }
        picker.dismiss(animated: true, completion: nil)
    }

    func imagePickerControllerDidCancel(_ picker: UIImagePickerController)
    {
        picker.dismiss(animated: true, completion: nil)
    }

    func uploadProfileImageData(imgageData: Data)
    {
        let activityIndicator = UIActivityIndicatorView.init(activityIndicatorStyle: .gray)
        activityIndicator.startAnimating()
        activityIndicator.center = self.view.center

        self.view.addSubview(activityIndicator)
        let storageReference = Storage.storage().reference()
        let currentUser = Auth.auth().currentUser
        let profileImageRef = storageReference.child("users").child(currentUser!.uid).child("profileImage.jpg")

        let uploadMetaData = FirebaseStorage.StorageMetadata()
        uploadMetaData.contentType = "image/jpeg"

        profileImageRef.putData(imgageData, metadata: uploadMetaData) { (uploadedImageMeta, error) in
            activityIndicator.stopAnimating()
            activityIndicator.removeFromSuperview()

            if error != nil
            {
                print("Error took place \(String(describing: error?.localizedDescription))")
                return
            } else {
                print("Meta data of uploaded image \(String(describing: uploadedImageMeta))")
            }

            let storageReference = Storage.storage().reference()
            // create a reference to the file you want to download
            let profileImageDownloadUrlReference = storageReference.child("users/\(currentUser!.uid)/profileImage.jpg")

            // UIImageView in your ViewController
            // let imageView: UIImageView = self.imageView

            // Placeholder image
            let placeholderImage = UIImage(named: "placeholder.jpg")

            // Load the image using SDWebImage
            userProfileImageView.sd_setImage(with: profileImageDownloadUrlReference, placeholderImage: placeholderImage)

            // fetch the download url

            profileImageDownloadUrlReference.downloadURL { url, error in
                if let error = error {
                    // Handle any errors
                    print("Error took place \(error.localizedDescription)")
                } else {
                    // get the download URL for 'images/stars.jpg'
                    print("Profile image download URL \(String(describing: url!))")
                }
            }
        }
    }
}

最佳答案

  1. 在 Podfile 中添加 pod“SDWebImage”、“~> 5.0”
  2. 导航到您的项目文件夹并输入“pod install”
  3. 在您的 swift 文件中添加“导入 SDWebImage”

您可能忘记安装 SDWebImage 库。您可以在这里查看这个库。 https://github.com/SDWebImage/SDWebImage

关于swift - 尝试在 UIImageView 上使用 SDWebImage 扩展时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51940085/

相关文章:

swift - iOS 8 CoreData iCloud 同步一致性问题

ios - 使用 NSFetchedResultsController 排序时在多个部分中的一个对象

ios - 是否可以从 UIImage 中剥离或完全删除 UIImageOrientation 信息?

ios - URL 中的 UIImage 需要太多时间才能显示

iphone - iOS SDWebImage 在 UITableViewCell 中淡入淡出

swift - 如何通过 cocoa pod 在 Swift 应用程序中添加模块?

xcode - 如何抑制 Xcode 7.3 警告 "String literal is not a valid Objective-C selector"

ios - CGContext 引用为 UIImage

ios - UIImageView 没有可见的@interface 声明了选择器 sd_setShowActivityIndi​​catorView 并且未检测到 sd_setIndicatorStyle

ios - 将 SDWebImage 中的图像设置为按钮的背景