gpt4 book ai didi

iOS:在 uicollectionview 中添加 UIProgressView 以显示上传到 firebase 存储的上传百分比

转载 作者:搜寻专家 更新时间:2023-11-01 06:59:34 25 4
gpt4 key购买 nike

我正在开发一个将图像列表上传到 firebase 存储的 iOS 应用程序,我需要在 uicollectionview 的每个单元格内放置一个进度 View (显示数据源中的每个图像)以指示将此图像上传到 firebase 存储的百分比.

我试试这段代码:

func Upload(imageView: UIImageView)
{
// Data in memory
var data = Data()
data = UIImageJPEGRepresentation(self.pickedImage, 0.8)!

// Create a root reference
let storageRef = Storage.storage().reference()
let imageName = NSUUID().uuidString

// Create a reference to the file you want to upload
let imageRef = storageRef.child("images/\(imageName).jpg")

// Upload the file to the path "images/rivers.jpg"
let uploadTask = imageRef.putData(data, metadata: nil) { (metadata, error) in
guard let metadata = metadata else {
// Uh-oh, an error occurred!
return
}
}

let observer = uploadTask.observe(.progress) { snapshot in
print("snapshot.progress",snapshot.progress)
}

uploadTask.observe(.progress) { snapshot in
let percentComplete = 100.0 * Double(snapshot.progress!.completedUnitCount)
/ Double(snapshot.progress!.totalUnitCount)
print("percentComplete",percentComplete)
let placeholderImage = UIImage(named: "la")
imageView.sd_addActivityIndicator()
imageView.sd_showActivityIndicatorView()
imageView.sd_setImage(with: imageRef, placeholderImage: placeholderImage)
}

uploadTask.observe(.success) { snapshot in
self.url = imageName
print(imageName)
print("success")
imageView.sd_removeActivityIndicator()
}
uploadTask.observe(.failure) { snapshot in
print("Failuer")
}
}

和:

arrayOfImages?[(arrayOfImages?.count)! - 1]?.Upload(imageView: cell.workImage)

但我无法得到它,因为在 UICollectionView 中重用了单元格,我怎样才能得到它?

最佳答案

1- 创建一个类并将这段代码粘贴到一个函数中

2- 在该类中创建进度属性,并在进度完成和图像的另一个属性中定期更新它

3- 在类中创建一个实例数组并用图像初始化它并开始上传

4- 在 cellForRowAt 中获取每个索引的当前进度值,这就是避免单元格重复使用和上传已上传或当前正在上传的图像的方法

//

应该是这样的

class Upload {

var currentState:State = .none

var progress:Float = 0

var img:UIImage

init(image:UIImage) {

img = image


}

func start () {

currentState = .uploading

///

let observer = uploadTask.observe(.progress) { snapshot in
self.progress = snapshot.progress
}

///


uploadTask.observe(.success) { snapshot in
currentState = .uploaded
}

//

}


}

enum State {

case uploading,uploaded,none
}

//

var arr = [Upload]()

for i in 0..<numberOfImages {

let img = UIImage(named: "\(i).png") // or get it anyWay

let up = Upload(image: img)

up.start() // start it in cellForRowAt if item state is none

arr.append(up)

}

关于iOS:在 uicollectionview 中添加 UIProgressView 以显示上传到 firebase 存储的上传百分比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51463422/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com