美文网首页
SwiftUI 中实现异步图像(含源代码)

SwiftUI 中实现异步图像(含源代码)

作者: 生命沙漏APP | 来源:发表于2021-02-10 18:12 被阅读0次

在Xcode中创建一个名为AsyncImageApp的SwiftUI项目。
两个要素:一个ImageFetcher类,用于从网络中检索图像;
以及一个AsyncImage视图,用于在SwiftUI中呈现它。

加载中
加载成功

1.让我们从定义ImageFetcher类开始。它是一个ObservableObject,并且具有一个已发布的变量,即可选的下载图像:

import Combine

class ImageFetcher: ObservableObject {

@Published
private(set) var image: UIImage?
private let url: URL
private var cancellable: AnyCancellable?

init(url: URL) {
    self.url = url
}

func start() {
    cancellable = URLSession(configuration: .default)
        .dataTaskPublisher(for: url)
        .map { UIImage(data: $0.data) }
        .replaceError(with: nil)
        .receive(on: DispatchQueue.main)
        .assign(to: \.image, on: self)
}

func stop() {
    cancellable?.cancel()
}

deinit {
    cancellable?.cancel()
}

}

2.定义了公共接口后,我们以合并的方式实现了完成所有工作的start()函数:

相关文章

网友评论

      本文标题:SwiftUI 中实现异步图像(含源代码)

      本文链接:https://www.haomeiwen.com/subject/rxykxltx.html