SwiftUI基础之Image

287 阅读1分钟

什么是Image

Image相当于iOS中的UIImageView

如何使用Image

使用SF符号

苹果设计规范网址,官方提供了Mac版SF符号app,里面提供了很多官方的icon,对于个人开发者来说,是一个大大的福利。

我们在SF符号里选中一张图片,复制他的名字

截屏2023-10-17 09.33.01.png

Image(systemName: "square.and.arrow.up")

同时系统通过imageScale方法给了3个大小,默认是中等:

  • small
  • medium
  • large
Image(systemName: "square.and.arrow.up")
    .imageScale(.large)

当然也可以自定义大小

Image(systemName: "square.and.arrow.up")
     .font(.system(size: 100))

使用自定义图片

直接输入名字即可

Image("coverImage")

改变大小

如果是直接使用frame的话,是不能改变大小的,需要配合resizable

Image("coverImage")
     .resizable()
     .frame(width: 100,height: 100)

图片展示类型

如果Image宽高比和图片的不一样,默认图片会压缩或者拉伸 所以提供了aspectRatio方法,并且提供了两个值:

  • fit 表示按比例缩放并且图片要完全显示出来,意味着可能会留有空白
  • fill 表示按比例缩放并且填满,意味着图片可能超出,需要被裁减掉
Image("coverImage")
    .resizable()
    .aspectRatio(contentMode: .fit)
    .frame(width: 200,height: 100)
    .background(.blue)

展示如下:

截屏2023-10-17 09.54.40.png

这里需要注意的,使用fill的时候,如果需要裁减掉多于的部分,需要配合clipped()方法

Image("coverImage")
    .resizable()
    .aspectRatio(contentMode: .fill)
    .frame(width: 200,height: 100)
    .clipped()

展示如下:

截屏2023-10-17 09.55.26.png

截取形状

Image("coverImage")
    .clipShape(Circle())

添加覆盖物

Image("coverImage")
    .overlay {
        Text("测试")
            .foregroundStyle(.white)
            .bold()
            .font(.system(size: 40))
}

渲染颜色

renderingMode()这个方法会把图片里面的