Dodałem pasek nawigacji bez kontrolera nawigacji, więc pasek nawigacji jest tylko paskiem. Czy istnieje sposób, aby pasek nawigacyjny obejmował całą górę ekranu telefonu?

enter image description here

0
gofish 16 czerwiec 2021, 04:23

4 odpowiedzi

Najlepsza odpowiedź

Spróbuj ustawić obiekt delegata dla paska nawigacyjnego. Coś jak;

navigationBar.delegate = self

Dostosuj UIBarPositioningDelegate w swoim obiekcie delegata i dołącz pasek do góry;

ViewController: UIViewController, UIBarPositioningDelegate {
    
    func position(for bar: UIBarPositioning) -> UIBarPosition {
        return .topAttached
    }
    
}
1
Desdenova 16 czerwiec 2021, 14:08

Jeśli używasz SwiftUI, możesz dodać ten modyfikator do swojego NavigationView:

.edgesIgnoringSafeArea(.top)
0
Gustavo Tiecker 16 czerwiec 2021, 13:50

Po prostu dodaj fikcyjny widok na górze swojego dummyNavBar, zadeklaruj widok górny pod klasą deklaracji kontrolera:

let topView = UIView()

Teraz w viewDidLoad ustaw kolor tła topView i dodaj ograniczenia:

topView.backgroundColor = .white // the background must be the same of your dummyNavBar
topView.translatesAutoresizingMaskIntoConstraints = false

view.addSubview(topView)
topView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
topView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
topView.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true
topView.bottomAnchor.constraint(equalTo: yourDummynavBar.topAnchor).isActive = true
0
Fabio 16 czerwiec 2021, 06:47

Bez kontrolera nawigacyjnego bierzesz odpowiedzialność za rozmiar i pozycjonowanie drążka. Spróbuj dodać ograniczenia przypinające górne, wiodące i końcowe kotwice na górze, wiodące i końcowe kotwice superwidoku. Następnie dodaj ograniczenie przypinające dolną część paska nawigacyjnego do dołu bezpiecznego obszaru ze stałą, powiedzmy, 44 pkt, niezależnie od pożądanej wysokości.

0
Mathew Miller 16 czerwiec 2021, 01:35