Swift UI中如何显示服务器返回的图片字节数组?
在SwiftUI中显示服务器返回的图片字节数组
实现步骤
调用通用层接口获取字节数组
通用层的Kotlin挂起函数fetchCustomerFile()在Swift中会适配为支持async/await的异步函数,直接调用后从BenoResult中解析出图片字节数组。将字节数组转换为可显示的图片实例
把获取到的ByteArray转为Swift的Data类型,再通过UIImage(data:)构造出可用于SwiftUI展示的图片对象。在SwiftUI视图中完成展示
使用Image(uiImage:)将UIImage嵌入界面,配合状态管理实现加载状态提示和图片展示逻辑。
代码示例
ViewModel层(处理数据加载逻辑)
import Foundation import SwiftUI class CustomerImageViewModel: ObservableObject { @Published var customerImage: UIImage? func loadCustomerImage() async { let result = await fetchCustomerFile() switch result { case .success(let imageBytes): let imageData = Data(imageBytes) customerImage = UIImage(data: imageData) case .failure(let error): print("图片加载失败:\(error.localizedDescription)") } } }
SwiftUI视图层
struct CustomerImageView: View { @StateObject private var viewModel = CustomerImageViewModel() var body: some View { VStack(spacing: 16) { if let image = viewModel.customerImage { Image(uiImage: image) .resizable() .scaledToFit() .cornerRadius(8) } else { ProgressView("加载图片中...") .onAppear { Task { await viewModel.loadCustomerImage() } } } } .padding() } }
注意事项
- 确保
BenoResult在跨平台层已正确映射为Swift可识别的枚举类型,包含success和failure两种状态分支。 - 如果图片无法正常显示,可先验证
Data(imageBytes)的有效性(比如打印字节数),确认服务器返回的字节数组是标准图片格式(如JPEG、PNG)。
内容的提问来源于stack exchange,提问作者ASA
相关产品推荐
相关产品推荐

