В swiftUI, Как удалить ТОЛЬКО безопасную область NavigationBarTitle? - PullRequest
0 голосов
/ 24 апреля 2020

enter image description here Моя цель встраивает navigationBaritems (для кнопок) в одну строку с nabigationBarTitle (для заголовка). Но navigationBarTitle подчеркивается как navigationBarItems.

. Поэтому вместо использования navigationBarTitle я изменил код следующим образом: navigationBarItems (lead: Text ("Title"), trailing: Button (action: {}) { Текст ("Button1")})

Теперь заголовок и кнопка выровнены на одной строке, но проблема в безопасной области NavigationBarTitle.

Вещи, которые я пробовал: Я пытался удалить его с помощью navigationBarHidden(true) Но он удаляет все navigationBarItems, а esgesIgnoringSafeArea также удаляет safearea из navigationBarItems. А также рассматривал возможность использования displaymode: .inline, но это выглядит не очень хорошо.

Как я могу удалить только safearea навигационного заголовка здесь?

Мой текущий код:

struct ContentView: View {
    var body: some View {



        NavigationView{
            VStack{

                HStack{
                Text("dd")
                    }.frame(width: 500, height: 300)
                    .background(Color.blue)
                Spacer()

            }
            .navigationBarItems(leading: Text("Title"), trailing: Button(action: {
                //some action
            })
            {
                Text("Button")
            })
        }
    }
}

Ответы [ 2 ]

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

вы можете попробовать что-то вроде этого:

struct ContentView: View {
var body: some View {
    NavigationView {
        VStack {
            HStack {
                Text("dd")
            }
            .frame(width: 500, height: 300)
            .background(Color.blue)
            Spacer()
        }.padding(.top, 88)  // <--- adjust to your needs
            .navigationBarItems(leading: Text("Title"), trailing: Button(action: {
                //some action
            })
            {
                Text("Button")
            }).edgesIgnoringSafeArea(.top)   // <--- add this

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

Иногда я думаю, что SwiftUI может быть не интуитивно понятным, но вот несколько советов:

Попробуйте поставить следующую строку после строки .background(Color.blue):

.navigationBarTitle("", displayMode: .inline)

Измените заголовок на непустая строка, чтобы увидеть, что делает .inline. Попробуйте взять , displayMode: .inline тоже. Этот большой заголовок - это то, что пытается заполнить все пустое пространство, которое вы видите на своем VStack. Вы также можете поэкспериментировать с .navigationBarHidden(true), если вам нужна настраиваемая навигационная панель (хотя вы, вероятно, не хотите этого, но все еще интересно попробовать).

Редактировать: я знаю, что вы сказали, что пробовали некоторые из этих вещей , Ключ , где вы помещаете строку, которую я перечислил выше. Он должен изменить элемент внутри VStack (например, ваш HStack или Spacer), поэтому, как я уже сказал, поместите эту линию ниже той, где вы устанавливаете цвет фона HStack на синий. Он пытается поставить пустой заголовок над вашим HStack, чего вы не хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...