SwiftUI NavigationView не видит изображение - PullRequest
1 голос
/ 12 апреля 2020

У меня есть код и сделать кнопку NavigationLink, я пишу текст и изображение, но мое изображение не видно. Пожалуйста, помогите мне.

VStack{
        Image("Coachs")
            .resizable()
            .aspectRatio(contentMode: .fill)
            .frame(width: 370, height: 200)
            //.clipped()
            .cornerRadius(20.0)
        NavigationLink(destination: Text("Detail view here")){
            ZStack{
                Text("Press on me")
                    .foregroundColor(.white)
                    .font(.largeTitle)
                Image("Coachs")
                    .resizable()
                    .aspectRatio(contentMode: .fill)
                    .frame(width: 370, height: 200)
                    //.clipped()
                    .cornerRadius(20.0)

            }


        }}

Я делаю экран, если вы не можете понять enter image description here

Ответы [ 3 ]

1 голос
/ 12 апреля 2020

Это похоже на ошибку SwiftUI при обработке растровых изображений. Пожалуйста, найдите ниже подход для обхода. Протестировано с Xcode 11.4 / iOS 13.4

demo

Это пример ячейки, которая будет использоваться для вашей цели. Конечно, в реальном случае имя изображения и место назначения навигационной ссылки и т. Д. c. Могут быть введены через параметры конструктора для повторного использования.

struct TestImageCell: View {
    @State private var isActive = false

    var body: some View {
        Image("large_image")    // raster !! image
            .resizable()
            .aspectRatio(contentMode: .fill)
            .frame(width: 370, height: 200)
            .cornerRadius(20.0)
            .overlay(
                Text("Press on me")              // text is over
                    .foregroundColor(.white)
                    .font(.largeTitle)
            )
            .onTapGesture { self.isActive.toggle() } // activate link on image tap
            .background(NavigationLink(destination:  // link in background
                Text("Detail view here"), isActive: $isActive) { EmptyView() })
    }
}
1 голос
/ 12 апреля 2020

хорошо, я посмотрел на другие типы изображений, попробуйте это, оно должно работать:

    Image("IMG_4944")
        .renderingMode(.original)  // <----- this
        .resizable()
        .aspectRatio(contentMode: .fill)
        .frame(width: 370, height: 200)
        .clipped()
        .cornerRadius(20.0)
1 голос
/ 12 апреля 2020

Я сделал этот тест из вашего кода, и все работает хорошо, ios 13.4 и катализатор, xcode 11.4 и macos catalina 10.15.4

var body: some View {
    NavigationView {
        VStack {
            Image(systemName: "person.2.fill")
                .resizable()
                .aspectRatio(contentMode: .fill)
                .frame(width: 370, height: 200)
                //.clipped()
                .cornerRadius(20.0)

            NavigationLink(destination: Text("Detail view here")){
                ZStack{
                    Image(systemName: "person.2.fill")
                        .resizable()
                        .aspectRatio(contentMode: .fill)
                        .frame(width: 370, height: 200)
                        //.clipped()
                        .cornerRadius(20.0)
                    Text("Press on me")
                        .foregroundColor(.black)
                        .font(.largeTitle)
                }
            }
        }
    }.navigationViewStyle(StackNavigationViewStyle())
}
...