这是我用来从存储中获取图像的代码。它的功能就像魅力,但我不想再次在不同的视图上重新下载它。
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)
}
}
}
}
我该怎么处理?
如果您只有一个或两个图像,那么只需存储在userdefault
然后您可以访问任何viewController,将image
存储为data
userdefault
,只要您想使用转换数据到图像并使用它,请参阅以下代码将数据转换为图片
let image = UIImage(data: imageData)
只需在您的类中全局声明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)
}
}
}
}
你可以做
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
}
或者使用qazxsw poi并分享链接,你也可以制作全局变量
SDWebImage
但它不推荐,因为它没有分组让开发人员知道它的源本地/实例/全局因此它不像单身人士那样令人困惑