Image+GeometryReader를 사용하여 AspectFill+clipToBounds 재현
이 기사를 참고로 구현했습니다.
GeometryReader(content: { geometry in
    Image(uiImage: image)
        .resizable()
        .scaledToFill()
        .frame(width: geometry.size.width, height: geometry.size.height)
})
    .aspectRatio(1, contentMode: .fit)
위의 기사와의 차이점은 GeometryReader의 Image 속성에
.frame 에서 GeometryReader의 크기를 전달합니다. 이미지에 프레임을 전달하면 GeometryReader의 표시 영역에 scaledToFill의 크기가 조정됩니다. 따라서 종횡비를 고정하면서 중앙 맞춤으로 임의의 종횡비로 클립할 수 있게 됩니다.이 방법의 장점으로, 자식 요소로 크기가 결정되는 것이 아니라 크기는 부모 요소 측에서 제공된 표시 가능 영역에 맞추어 리사이즈하므로 LazyVGrid 등에서 사용할 때 등에 크기를 고정화할 필요가 없어집니다. .
샘플 코드
gist
struct ProductGridCell: View {
    let name: String
    let price: Int
    let image: UIImage
    var body: some View {
        VStack(alignment: .leading, spacing: 3) {
            GeometryReader(content: { geometry in
                Image(uiImage: image)
                    .resizable()
                    .scaledToFill()
                    .frame(width: geometry.size.width, height: geometry.size.height)
            })
            .aspectRatio(1, contentMode: .fit)
            .clipShape(RoundedRectangle(cornerRadius: 4))
            Text(name)
                .foregroundColor(.primary)
                .font(.caption)
            Text("¥\(price)")
                .font(.caption2)
                .foregroundColor(.secondary)
        }
    }
}
struct ProductGridCell_Previews: PreviewProvider {
    static var previews: some View {
        ScrollView {
            LazyVGrid(columns: [GridItem(), GridItem(), GridItem()], content: {
                ForEach(0..<20) { _ in
                    ProductGridCell(name: "どら焼き", price: 300, image: UIImage(imageLiteralResourceName: "product"))
                }
            })
                .padding()
        }
    }
}
                Reference
이 문제에 관하여(Image+GeometryReader를 사용하여 AspectFill+clipToBounds 재현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/teranyan/items/b51fd4751a1acd1bcaa3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
                                
                                
                                
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)