Обрезать кликабельные части изображения как NavigationLink (SwiftUI) - PullRequest
0 голосов
/ 25 октября 2019

При реализации изображения в закрытии NavigationLink и обрезании этого изображения, незафиксированное изображение можно щелкнуть. Из-за отсечения изображения накладываются друг на друга (см. Прикрепленные снимки экрана). Overlapping Images Clipped Images Первый скриншот показывает оригинальный размер. При обрезке (второй снимок экрана) щелчка по красной заштрихованной области (показанной на первом снимке экрана) срабатывает вторая, а не первая NavigationLink.

Следующий код вызывает проблему:

var body: some View {
        NavigationView{
            ScrollView{
                VStack (spacing: 20) {
                    NavigationLink(destination: ImageGalleryView1()) {
                        Image(uiImage: downsample(imageAt: URL(string: "imageURL")!, to: CGSize(width: 500, height: 500), scale: 1))
                            .frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: 200, alignment: .center)
                            .clipped()
                    }
                    NavigationLink(destination: ImageGalleryView2()) {
                        Image(uiImage: downsample(imageAt: URL(string: "imageURL")!, to: CGSize(width: 500, height: 500), scale: 1))
                            .frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: 200, alignment: .center)
                            .clipped()
                    }
                    NavigationLink(destination: ImageGalleryView3()) {
                        Image(uiImage: downsample(imageAt: URL(string: "imageURL")!, to: CGSize(width: 500, height: 500), scale: 1))
                            .frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: 200, alignment: .center)
                            .clipped()
                    }
               }
          }
}

Я попытался обрезать изображение, попытался обрезать NavigationLink, поиграл со свойствами .frame () -. Но безуспешно.

Моя цель - создать VStack с тремя изображениями, каждое из которых представляет собой NavigationLink. Обрезанные части не должны быть кликабельными. Я хочу по возможности избегать кнопок или фигур в этом случае.

1 Ответ

1 голос
/ 26 октября 2019

Я не знаю вашей точной реализации downsample(imageAt:), но приведенная ниже реализация избавляет от перекрытия изображений:

NavigationLink(destination: ImageGalleryView1()) {
                    Image("sample-image")
                    .resizable(resizingMode: .tile)
                    .frame(minWidth: 0,
                           maxWidth: .infinity,
                           minHeight: 0,
                           maxHeight: 200,
                           alignment: .center)
                }
...