struct ImageSample: View {
    var body: some View {
        HStack{
            //Frame으로 이미지의 크기는 변하지 않음. 뷰가 차지하는 공간만 변화함.
            Image(systemName: "star.fill").frame(width: 100,height: 100)
            Image(systemName: "star.fill").frame(width:50, height:50)
            //크기를 변경해야 하는경우 resizable을 사용해야 함.
            Image(systemName: "star.fill").resizable().frame(width: 150, height: 150)
            
            Image(systemName: "star.fill").resizable(resizingMode: .tile).frame(width: 200, height: 200)
            
        }
    }
}

기존 uikit에서 사용하는 방식보다 간결하게 이미지를 구성이 가능하다.

이미지 확대시 적용되는 옵션은 기본 Scale to fill이다.

UIKit SwiftUI 설명
Scale to fill 기본값 비율과 상관 없이 이미를 늘려서 공간을 가득 채움
Aspect Fit .ScaledToFit() 이미지의 원본비율을 유지한 상태에서 가능한 최대 크기 까지 늘어남. w,h중 작은 값에 비율을 맞추기 때문에 이미지가 뷰를 벗어나지 않음.
Aspect Fill .ScaledToFill() w,h중 큰값으로 이미지 비율 설정 → 이미지가 뷰를 벗어날 수 있음.

ContentMode

		HStack{
                Image(systemName: "star.fill").resizable()
                    .frame(width: 100,height: 150)
                Image(systemName: "star.fill").resizable().scaledToFit()
                    .frame(width: 100,height: 150)
                Image(systemName: "star.fill").resizable().scaledToFill()
                    .frame(width: 100,height: 150)
            }

AspectRatio

콘텐츠 모드를 적용한뒤 좀더 세부적으로 비율을 조절하기 위해 사용된다고함.

ClipShape

이미지의 세이프를 조절함.

Image(systemName: "star.fill").resizable()
                    .frame(width: 100,height: 150).clipShape(Circle())

RenderingMode

tamplate - 이미지의 불투명 영역이 가진 본래의 색을 무시하고 원하는 색으로 변경

orignal - 항상 이미지 본래의 색을 유지함.

Hstak{
	Image("SwiftUI").renderingMode(.original)-> 원본색유지
	Image("SwiftUI").rederingMode(.template)-> 레드로 변경됨
}.foregroundColor(.red)