Ändern Sie die Position von UIBarButtonItem in UINavigationBar
Wie kann ich die position des ein UIBarButtonItem in eine UINavigationBar? Ich möchte meine Taste, um etwa 5px höher als seine normale position.
Kommentar zu dem Problem
Sie wollen auch die UINavigation bar dahinter oder einfach nur die Schaltfläche frei schwebend? Kommentarautor: Jaba
Nicht ganz sicher, was du meinst - ich denke, die Antwort ist, dass ich es will, Verhalten sich genau wie eine normale UIBarButtonItem innen eine UINavigationBar würde. Sagen wir, Sie war die leftBarButtonItem...alles das gleiche, nur 5px höher. Ist die Schaltfläche mit einem benutzerdefinierten Bild, als auch, falls das relevant ist. Kommentarautor: Ben Williams
ein Ansatz ist, verwenden Sie einfach Bilder statt. dieses "immer funktioniert" obwohl es ein Streit. Kommentarautor: Fattie
InformationsquelleAutor der Frage Ben Williams | 2011-04-23
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist keine besonders gute Möglichkeit, dies zu tun. Ihre beste Wette, wenn Sie wirklich müssen, um eine Unterklasse UINavigationBar, und überschreiben
layoutSubviews
zu nennen[super layoutSubviews]
und dann finden und positionieren Sie die Schaltfläche Ansicht.InformationsquelleAutor der Antwort Anomie
Dieser code erstellt eine Schaltfläche "zurück" für die UINavigationBar mit Bild-hintergrund und kundenspezifische position. Der trick ist, erstellen Sie eine Standard-Ansicht und ändern Sie seine Grenzen.
InformationsquelleAutor der Antwort Evgeny Shadchnev
Ich gelöst mit transformieren und benutzerdefinierte Ansicht:
(Swift)
InformationsquelleAutor der Antwort Adriano Spadoni
Für diejenigen von Ihnen entwickelt, die für iOS 5, stolperte über diese und entmutigt wurden... Probieren Sie etwas wie dieses:
InformationsquelleAutor der Antwort Joe Marx
Ist der beste Weg, um eine Unterklasse Ihrer UINavigationBar, wie hier beschrieben: https://stackoverflow.com/a/17434530/1351190
Hier ist mein Beispiel:
Hoffe, es hilft.
InformationsquelleAutor der Antwort Simone Lai
Versuchen Sie den code unten
Seine ändern, die 'y' position in diesem code. Ändern Sie die " y " - Wert (hier ist es -20.0 f) entsprechend Ihrer Anforderung. Wenn der Wert positiv ist, wird es unten die Schaltfläche position. Wenn der Wert negativ ist, wird Ihre Schaltfläche position.
InformationsquelleAutor der Antwort Augustine P A
Ich brauchte, um meine Schaltfläche, um mehr über auf der rechten Seite. Hier ist, wie ich es mit UIAppearance in Swift. Es gibt eine vertikale position-Eigenschaft gibt es so gut wie ich mir vorstellen, dass Sie können passen Sie in jede Richtung.
Scheint dies viel weniger invasive mir als messing mit den Rahmen direkt oder hinzufügen von benutzerdefinierten Untersichten.
InformationsquelleAutor der Antwort Mark Bridges
Wenn Sie einfach nur mit einem Bild und NICHT auf die Standard-chrome, die Sie verwenden können negative image insets (setzen Sie im size inspector verschieben Sie das Bild um innen die UIBarButtonItem (praktisch, da standardmäßig die horizontale Polsterung führen kann, dass das Bild weiter nach innen, als Sie wollen). Sie können das Bild verwenden, Abstände um das Bild zu positionieren, die außerhalb der Grenzen des UIBarButtonItem, als gut, und die gesamte Umgebung der linken Seite mit der Schaltfläche arbeitsfähiger, so dass Sie nicht haben, um sorgen um die Sicherung seiner Position in der Nähe einer Tippen Sie auf Ziel. (zumindest innerhalb Grund.)
InformationsquelleAutor der Antwort Christopher Swasey
Die beste Lösung, die ich finden konnte, ist die Initialisierung ein UIBarButtonItem mit einem Untersicht, enthält extra-Raum, Links/rechts. Diese Weise werden Sie nicht haben, um sorgen über subclassing, und ändern Sie das layout der anderen Elemente innerhalb der navigation bar, wie Sie die Titel.
Zum Beispiel, um eine Schaltfläche zu verschieben 14 Punkte auf der linken Seite:
InformationsquelleAutor der Antwort Jorge Aguirre
Als @Anomie sagte, wir müssen Unterklasse
UINavigationBar
, und überschreibenlayoutSubviews()
.Dieser wird alle Rechte Leiste, button-Elemente, die fest an der rechten Seite der Navigationsleiste (im Gegensatz zum leicht Links eingestellt Standardeinstellung):
Der einzige Ort, um die UINavigationBar Eigentum der UINavigationController ist in seiner init(), etwa so:
Die zweite Zeile legt die root-view-controller von UINavigationController.
(Da wir nicht über
init(rootViewController:)
InformationsquelleAutor der Antwort Zoltán Matók
Swift 3.1
InformationsquelleAutor der Antwort Adam Smaka
Schritt 1:
Satz-Titel-position mit Darstellung API. Zum Beispiel, in AppDelegate ist didFinishLaunchingWithOptions
Schritt 2:
Unterklasse UINavigationBar
InformationsquelleAutor der Antwort andriy_fedin
Hier ist Adriano, der die Lösung mittels Swift-3. Es war die einzige Lösung, die für mich gearbeitet und ich habe versucht, mehrere.
InformationsquelleAutor der Antwort JP Aquino
In meinem Fall
ändern barbuttonItem Rahmen anpassen Räume
Hinzufügen, Entfernen barButtonItems dynamisch.
Farbton ändern Farben durch tableview ist contentOffset.y
wie diese
Wenn Ihr Mindestziel ist iOS 11, können Sie den barButton frames in der viewDidLayoutSubviews
Aber, es funktioniert Nur auf iOS-11.
Ich auch versucht, mit Hilfe der fixedSpace. Aber Es hat nicht funktioniert in mehreren navigationBarButton Elemente.
So, ich änderte customView Breite zu justieren die horizontale Raum.
Dies ist einer der meine barButtonItem Klasse
Dies ist das Ergebnis.
Getestet habe ich auf iOS 9 ~ 11, Swift (4)
InformationsquelleAutor der Antwort Den
Init
UIBarButtonItem
mit benutzerdefinierten Ansicht und überlastunglayoutSubviews
in benutzerdefinierter Ansicht, wie dieseInformationsquelleAutor der Antwort alex1704
Können Sie immer tun-Anpassungen mit Hilfe von Einschüben auf den button. Zum Beispiel,
Es funktioniert für mich.
InformationsquelleAutor der Antwort Joe M
Hier ist eine einfache Lösung, das war ausreichend für meine Bedürfnisse. Ich fügte hinzu, eine info-Taste auf der rechten Seite der UINavigationBar aber standardmäßig sitzt viel zu nahe an den Rand. Durch die Erweiterung der Breite des Rahmens, ich war in der Lage zu erstellen, die zusätzlichen Abstände benötigt, auf der rechten Seite.
InformationsquelleAutor der Antwort anna
Fand ich die Lösung dieses problem durch Anpassung der Bild-Rand Abstände der custom-Taste. Ich hatte die Anforderung in der app zu erhöhen, die Höhe der navigation bar und nach der Erhöhung der Höhe macht die rightBarButtonItem und leftBarButtonItem Bilder unpositioned problem.
Finden Sie den code unten:-
Hoffe, dies hilft jemand.
InformationsquelleAutor der Antwort iGW