SwiftUI - Image (图片)

983 阅读1分钟

加载本地图片

可以加载资源包中的图片文件和系统内置的图标(SF Symbols)

  • 使用 .resizable() 可使图片不超出屏幕或指定区域
  • SF Symbols 内置图标自带的颜色,可以用 .renderingMode(.original). 来渲染

截屏2022-12-08 下午2.42.26.png

var body: some View {
    VStack {
        Image(systemName: "swift")
            .resizable()
            .renderingMode(.original)
        Image("wechat") // 放在资源包中的图片
    }
}

加载网络图片

1. 展示默认图片

下载图片时,默认会显示一个灰色的占位视图,下载完成后,会自动根据图片原始尺寸在屏幕上展示。

截屏2022-12-08 下午2.57.07.png

static let url = "https://images.pexels.com/photos/3652898/pexels-photo-3652898.jpeg?auto=compress&cs=tinysrgb&dpr=3&h=750&w=1260"

var body: some View {
    AsyncImage(url: URL(string: BasicAsyncImage.url))
}

2. 改变图片尺寸, 修改默认占位视图

iShot_2022-12-08_15.06.46.gif

AsyncImage(url: URL(string: BasicAsyncImage.url)) { image in
            image
                .resizable()    // 适应屏幕尺寸
                .scaledToFit()
        } placeholder: {
            Color.gray.opacity(0.3)
                .overlay(ProgressView())
        }
        .frame(width: 200, height: 200)
        .cornerRadius(20)
        .overlay(RoundedRectangle(cornerRadius: 20).stroke(.purple, lineWidth: 1))