【问题标题】:Using UIActivityIndicator-for-SDWebImage with Swift在 Swift 中使用 UIActivityIndi​​cator-for-SDWebImage
【发布时间】:2015-09-30 13:48:23
【问题描述】:

我正在使用SDWebImage,我想添加一个加载指示器。我找到了UIActivityIndicator-for-SDWebImage 库,并尝试通过添加以下内容将其添加到我的 Swift 项目中:

#import "UIImageView+UIActivityIndicatorForSDWebImage.h"

到我的桥接头。由于某种原因,我在设置图像 URL 时仍然无法访问额外参数 usingActivityIndicatorStyle

有人知道我做错了什么吗?我尝试删除 .m 和 .h 文件并重新添加它们,但没有帮助。

【问题讨论】:

    标签: ios xcode swift sdwebimage bridging-header


    【解决方案1】:
    1. 添加“use_frameworks!”在 Podfile 中

      use_frameworks!
      
      target '<YOUR TARGET>' do
      .........
          pod 'UIActivityIndicator-for-SDWebImage'
      .........
      end
      
    2. 在“Pods -> UIActivityIndi​​cator-for-SDWebImage -> UIImageView+UIActivityIndi​​catorForSDWebImage.h”中替换:

      #import "UIImageView+WebCache.h"
      #import "SDImageCache.h"
      

      与:

      #import <SDWebImage/UIImageView+WebCache.h>
      #import <SDWebImage/SDImageCache.h> 
      
    3. 在“AppDelegate.swift”中添加

      import UIActivityIndicator_for_SDWebImage
      

      就是这样。

    附:您应该更正 Pods,因为 UIActivityIndi​​cator-for-SDWebImage 的作者在描述中写道:“......我真的不想让这个 repo 保持更新......”,他真的没有这样做。

    【讨论】:

    • #import 是否也适用于纯 Objective-C 项目?如果是这样,我认为 pod 应该更新到这个,这样它就可以在 Objective-C 和 Swift 上运行。
    • 当然,这个 pod 是在 Objective C 上编写的,并且适用于 Objective-C 和 Swift 项目。
    • 我知道这个 pod 适用于 Obj-C 和 Swift 项目。但#import "SDImageCache.h" 没有——我们必须解锁文件并将其修改为#import <...>。但是,在 pod 更新或重新安装时,它会恢复到 git 版本。因此,如果 "..." 仅适用于 Obj-C 而 <...> 两者都适用,则最好使用 <...> 而不是 "..."
    • UIImageView+UIActivityIndi​​catorForSDWebImage.h,需要修改的是Objective C文件。当然,在 pod 更新更改将恢复。由于不再支持此 pod,因此防止这种情况的一种方法是创建自己的 fork 并使用它。
    【解决方案2】:

    Swift 3 和 SDWebImage 4.0.0

    这样就可以了,试试这段代码

            let urlString = URL(string: "Your image URL")
            yourImageView.sd_setIndicatorStyle(.gray)
            yourImageView.sd_setShowActivityIndicatorView(true)
            yourImageView.sd_setImage(with: urlString) { (loadedImage, error, cacheType, url) in
                yourImageView.sd_removeActivityIndicator()
                if error != nil {
                    print("Error code: \(error!.localizedDescription)")
                } else {
                    yourImageView.image = loadedImage
                }
            }
    

    【讨论】:

      【解决方案3】:

      上面的答案有效

      关注本期https://github.com/JJSaccolo/UIActivityIndicator-for-SDWebImage/pull/28

      你会发现一个已经进行了更新的分叉

      https://github.com/masterfego/UIActivityIndicator-for-SDWebImage

      我也分叉了,

      https://github.com/useeless37/UIActivityIndicator-for-SDWebImage

      然后在你的 pod 文件中

      pod 'UIActivityIndicator-for-SDWebImage', :git => 'https://github.com/useeless37/UIActivityIndicator-for-SDWebImage.git'
      

      【讨论】:

        猜你喜欢
        • 2012-07-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-21
        相关资源
        最近更新 更多