Как изменить цвет стрелки NavigationLink внутри формы - PullRequest
2 голосов
/ 26 апреля 2020

В SwiftUI, когда NavigationLink помещается внутри формы, автоматически появляется стрелка на задней стороне NavigationLink. Как изменить цвет этой стрелки?

struct example: View {
    var body: some View {
        NavigationView {
            Form {
                NavigationLink(destination: Text("Example destination")) {
                    Text("Example link")
                }
            }
        }
    }
}

1 Ответ

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

Form / List повторно используется UITableView, и всегда было проблемой изменить индикатор раскрытия tintColor * См .: Вопрос
Так что неудивительно, что .accentColor здесь также не будет работать.

В основном предлагалось заменить его на пользовательское представление.
Так что давайте сделаем то же самое в SwiftUI.

Решение:

struct ContentView: View {
  var body: some View {
    NavigationView {
      Form {
        //Overlap NavigationLink and our Custom Cell arrangement
        ZStack {
          //Create a NavigationLink without the disclosure indicator
          NavigationLink(destination: Text("Hello, World!")) {
            EmptyView()
          }

          //Replicate the default cell
          HStack {
            Text("Custom UI")
            Spacer()
            Image(systemName: "chevron.right")
              .resizable()
              .aspectRatio(contentMode: .fit)
              .frame(width: 7)
              .foregroundColor(.red) //Apply color for arrow only
          }
          .foregroundColor(.purple) //Optional: Apply color on all inner elements
        }

        //Default style
        NavigationLink(destination: Text("Hello, World!")) {
          Text("Default UI")
        }
      }
    }
  }
}
  • NavigationLink с EmptyView избавляет от индикатора раскрытия по умолчанию
  • HStack - это наша пользовательская ячейка View который дублирует расположение ячеек по умолчанию
    • Image(systemName: "chevron.right") - наша замена индикатора диктовки
    • .foregroundColor позволит нам добавить sh цвет либо на весь HStack, либо просто Image (на ваш выбор)
  • ZStack позволяет перекрывать два вышеупомянутых.
    • * * * * * * * NavigationLink в основном делает всю ячейку соприкасающейся

Результат:

Result

...