Добавить жест касания к SwiftUI navigationBarTitle? - PullRequest
0 голосов
/ 28 января 2020

Мне нужно иметь возможность добавить распознаватель жестов касания к заголовку панели навигации. Но это не поддерживается в SwiftUI? Есть ли обходной путь, другие люди смогли это сделать?

В связанной заметке нельзя ли отобразить пользовательский вид в качестве заголовка панели навигации? Прямо сейчас у меня может быть только текстовое представление, но не изображение, например (или текстовое представление с модификатором жеста).

Ответы [ 2 ]

0 голосов
/ 29 января 2020

Мне так нравится

struct TestView: View {
 @State static var title = "Some title text"
 @State static var profileImage = "person.crop"
 @State static var action : Int = 0
 ... 
 var body: some View {
    NavigationView {
    ...


    .navigationBarItems(leading: TitleLabel(title: TestView.$title), trailing: ProfileButton(imageName: TestView.$profileImage, action: TestView.$action))
    .navigationBarTitle(Text(""), displayMode: .inline)
   }
}
}

и

struct TitleLabel: View {
@Binding var title: String
var body: some View {
    VStack {
        Text(self.title)
            .font(.title)
            .foregroundColor(Color.blue)
            .fontWeight(.bold)
    }
    .padding(EdgeInsets.init(top: 0, leading: 0, bottom: 0, trailing: 0))
}
}

struct ProfileButton: View {
@Binding var imageName: String
@Binding var action: Int
@State private var showModal = false
var body: some View {
    VStack {
        Button(action: {

        }) {
            Image(systemName: imageName)
                .resizable()
                .imageScale(.large)
                .frame(width: 36, height: 36, alignment: .center)
                .padding(EdgeInsets.init(top: 0, leading: 0, bottom: 5, trailing: -20))
                .foregroundColor(Color.black)

        }
    }
    .padding(.horizontal)
}

func doAction(action: Int) {
    switch action {
    case 0:
        print("open profile")
    default:
        print("Unkown action")
    }
}
}
0 голосов
/ 29 января 2020

Это не очень элегантно, но использование одной из ваших навигаций BarItems () работает.

struct ContentView: View {
    var body: some View {
        NavigationView{
            Text("Hello World!")
                .navigationBarItems(leading:YourView())
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...