【问题标题】:Difficulty loading Image in Swift with Kingfisher使用 Kingfisher 难以在 Swift 中加载图像
【发布时间】: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


【解决方案1】:

我遇到了同样的问题,发现我在日志“无法加载资源,因为应用程序传输安全策略要求使用安全连接”中有这个问题。

我通过在 info.plist 中添加 NSAppTransportSecurity 作为字典来修复它,然后我添加了 Allow Arbitrary Loads 布尔值和 YES 作为价值 。它立即起作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-20
    • 1970-01-01
    • 1970-01-01
    • 2020-11-06
    • 1970-01-01
    相关资源
    最近更新 更多