簡體   English   中英

如何在不同視圖之間共享從Firebase存儲下載的圖像?

[英]How to share image downloaded from firebase storage between different views?

這是我用來從存儲中獲取圖像的代碼。 它像魅力一樣工作,但我不想再次在不同的視圖上重新下載它。

func retreiveImagesFromFireBase(downloadUrl:String,imageHolder:UIImageView){
    if downloadUrl != "" {
        let storageRef = Storage.storage().reference(forURL: downloadUrl)
        // Download the data, assuming a max size of 1MB (you can change this as necessary)
        storageRef.getData(maxSize: 5*1024*1024) { (data, error) in
            if error == nil {
                if let pic = UIImage(data: data!) {
                    imageHolder.image = pic
                }
            } else {
                print(error)
            }
        }
    }
}

我該如何處理?

只需在類中和函數內部全局聲明UIImage,即可在其中設置imageHolder,將下載的圖像分配給全局圖像,然后在任何需要的地方使用它。

UIImage image;

func retreiveImagesFromFireBase(downloadUrl:String,imageHolder:UIImageView){
            if downloadUrl != ""{
                let storageRef = Storage.storage().reference(forURL: downloadUrl)
                // Download the data, assuming a max size of 1MB (you can change this as necessary)
                storageRef.getData(maxSize: 5*1024*1024) { (data, error) in
                    if error == nil{
                        if let pic = UIImage(data: data!){
                            imageHolder.image = pic
                            image = pic // use it on other views 
                        }
                    }else{
                        print(error)
                    }
                }
            }
        }

如果只有一兩個圖像,則只需將其存儲在userdefault ,然后就可以在任何viewController中進行訪問,將image作為datauserdefault只要您想使用,只需將數據轉換為圖像並使用它,請參見以下代碼將數據轉換為圖片

let image = UIImage(data: imageData)

你可以做

class Service { 
   static let shared = Service()  
   var image1:UIImage?
   var image2:UIImage?
   let imageLink = "//////" // or with SDWebImage
}

if let pic = UIImage(data: data!){
    Service.shared.image = pic
}

或者使用SDWebImage並共享鏈接,您還可以像這樣創建全局變量

var image:UIImage? 

但不建議使用此方法,因為它沒有分組以讓開發人員知道其來源本地/實例/全局,因此與單例不同,這令人困惑

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM