【发布时间】:2017-02-25 09:01:24
【问题描述】:
我有一个奇怪的问题。我正在尝试使用 Kingfisher 在我的应用程序中加载和缓存来自 Firebase 的图像。问题是 kkingfisher 不下载图像。我正在使用本地存储的占位符图像,滚动视图显示该图像。如果我从命令中删除占位符部分,应用程序将崩溃。所以我知道 Kingfisher 函数的工作原理是至少将占位符 Image 放入 UIImageView 而不是 URL 中的图像。代码如下:
你能指出正确的方向吗?
import UIKit
import Kingfisher
class Backprogramme: UIViewController {
override var prefersStatusBarHidden: Bool {
return true
}
@IBOutlet var BackPScroll: UIScrollView!
var imageArray = [UIImage]()
var folie1Image = UIImageView()
override func viewDidLoad() {
super.viewDidLoad()
let folie1URL = URL(string: "https://firebasestorage.googleapis.com/v0/b/backmaster-cdb60.appspot.com/o/Folie1.PNG?alt=media&token=efcb8e93-b817-41f3-a96f-946fd47cf468")!
folie1Image.kf.setImage(with: folie1URL, placeholder: #imageLiteral(resourceName: "first"))
imageArray = [folie1Image.image!]
for i in 0..<imageArray.count {
let imageView = UIImageView()
imageView.image = imageArray[i]
let xPosition = self.view.frame.width * CGFloat(i)
imageView.frame = CGRect(x: xPosition, y: 0, width: self.BackPScroll.frame.width, height: self.BackPScroll.frame.height)
BackPScroll.contentSize.width = BackPScroll.frame.width * CGFloat(i+1)
BackPScroll.addSubview(imageView)
}
// Do any additional setup after loading the view.
}
}
【问题讨论】:
-
你不能在下面的行 imageArray = [folie1Image.image!] 处点一个断点,看看 forlie1Image 指向什么?
-
folie1Image 指向它给出的 URL。 URL 也可以。显示图像。我已经有一个打印命令来检查变量。我还检查了 folie1image.image 及其等于 nil。
-
以下语句 folie1Image.kf.setImage(with: folie1URL, placeholder: #imageLiteral(resourceName: "first")) 可能有问题,很可能 setImage 未能从 folie1URL 设置图像.您可以在方法内部导航以查看问题所在吗?
-
mwthod 在这里,我似乎找不到任何问题:github.com/onevcat/Kingfisher/blob/master/Sources/…
-
看来您正在传递 URL,其中需要 ImageResource 类型的资源在 folie1Image.kf.setImage(with: folie1URL...) 行中。
标签: ios swift xcode uiimage kingfisher