在 Swift 中使用 UIActivityIndi​​cator-for-SDWebImage

Posted

技术标签:

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

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

#import "UIImageView+UIActivityIndicatorForSDWebImage.h"

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

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

【问题讨论】:

【参考方案1】:

    添加“use_frameworks!”在 Podfile 中

    use_frameworks!
    
    target '<YOUR TARGET>' do
    .........
        pod 'UIActivityIndicator-for-SDWebImage'
    .........
    end
    

    在“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> 
    

    在“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'

【讨论】:

以上是关于在 Swift 中使用 UIActivityIndi​​cator-for-SDWebImage的主要内容,如果未能解决你的问题,请参考以下文章

swift 优雅地处理Swift中可本地化的字符串。注意:此代码在Swift 2中,需要在现代Swift中使用更新。

在 Swift 项目中使用 Objective C 类中的 Swift 类

在 Swift 项目中使用 Objective C 类中的 Swift 类

如何在 Swift 中使用 Apple 地图 - 你必须使用 C 还是 Swift 可以?

swift 在swift中使用javascriptcore

swift 在swift中使用枚举练习