Ich würde gerne einen "Zurück" -Button mit der linken Pfeilblende in a erstellen UIToolbar
.
Soweit ich das beurteilen kann, besteht die einzige Möglichkeit, eine davon zu erhalten, darin, die UINavigationController
Standardeinstellungen beizubehalten, und es wird eine für das Element der linken Leiste verwendet. Aber es gibt keine Möglichkeit, eine als zu erstellen UIBarButtonItem
, daher kann ich keine in einem Standard erstellen UIToolbar
, obwohl sie UINavigationBar
s sehr ähnlich sind .
Ich könnte es manuell mit Schaltflächenbildern erstellen, aber ich kann die Quellbilder nirgendwo finden. Sie haben Alpha-Kanal-Kanten, sodass Screenshots und Schnitte keine sehr vielseitigen Ergebnisse liefern.
Irgendwelche Ideen jenseits von Screenshots für jede Größe und jedes Farbschema, die ich verwenden möchte?
Update: BITTE HÖREN SIE AUF, der Frage auszuweichen und schlagen vor, dass ich dies nicht stellen und verwenden sollte UINavigationBar
. Meine App ist Instapaper Pro. Es wird nur eine untere Symbolleiste angezeigt (um Platz zu sparen und den lesbaren Inhaltsbereich zu maximieren), und ich möchte eine linkspfeilförmige Schaltfläche "Zurück" unten einfügen.
Mir zu sagen, dass ich das nicht tun muss, ist keine Antwort und verdient auf keinen Fall ein Kopfgeld.
Antworten:
Ich habe die folgende PSD verwendet, die ich von http://www.teehanlax.com/blog/?p=447 abgeleitet habe
http://www.chrisandtennille.com/pictures/backbutton.psd
Ich habe dann gerade eine benutzerdefinierte UIView erstellt, die ich in der customView-Eigenschaft des Symbolleistenelements verwende.
Funktioniert gut für mich.
Bearbeiten: Wie von PrairieHippo hervorgehoben , stellte maralbjo fest, dass die Verwendung des folgenden einfachen Codes den Trick (erfordert ein benutzerdefiniertes Bild im Bundle) mit dieser Antwort kombiniert werden sollte. Also hier ist zusätzlicher Code:
quelle
Die Unicode-Methode
Ich denke, es ist viel einfacher, nur ein Unicode-Zeichen zu verwenden, um die Arbeit zu erledigen. Sie können durch Pfeile schauen, indem Sie entweder Unicode-Dreiecke oder Unicode-Pfeile googeln . Ab iOS6 hat Apple das Zeichen in ein Emoji-Zeichen mit Rahmen geändert. Um den Rand zu deaktivieren, füge ich den 0xFE0E Unicode Variation Selector hinzu .
Der Codeblock ist nur für die Demo. Es würde in jeder Schaltfläche funktionieren, die einen NSString akzeptiert.
Für eine vollständige Liste der Zeichen suchen Sie bei Google nach Unicode-Zeichen und Ihren Wünschen. Hier ist der Eintrag für Black Left-Pointing Triangle .
Ergebnis
quelle
WARNUNG: Es gibt Berichte, dass dies unter iOS 6 nicht funktioniert. Dies funktioniert möglicherweise nur unter älteren Versionen des Betriebssystems. Offensichtlich hat mindestens ein Entwickler seine App für die Verwendung dieses Tricks abgelehnt (siehe Kommentare). Benutzung auf eigene Gefahr. Die Verwendung eines Bildes (siehe Antwort oben) ist möglicherweise eine sicherere Lösung.
Dies kann ohne Hinzufügen eigener Bilddateien mit der sekr1t-Schaltfläche Typ 101 erfolgen, um die richtige Form zu erhalten. Für mich bestand der Trick darin, herauszufinden, mit welchem ich das
initWithCustomView
erstellen konnteBarButtonItem
. Ich persönlich brauchte dies eher für eine dynamische Navigationsleiste als für einetoolbar
, aber ich habe es mit einer Symbolleiste getestet und der Code ist fast der gleiche:Wenn Sie dies in einer Symbolleiste tun, müssen Sie die Einstellung der Elemente anpassen. Dies hängt jedoch vom Rest Ihres Codes ab, und ich überlasse dies dem Leser als Übung. : P Dieses Beispiel hat bei mir funktioniert (kompiliert und ausgeführt).
Blah blah, lies das HIG, benutze keine undokumentierten Funktionen und all das. Es gibt nur sechs unterstützte Schaltflächentypen und dies ist keiner von ihnen.
quelle
Zunächst müssen Sie ein Bild des Zurück-Buttons finden. Ich habe eine nette App namens Extractor verwendet , die alle Grafiken vom iPhone extrahiert. In iOS7 konnte ich das aufgerufene Bild abrufen
UINavigationBarBackIndicatorDefault
und es war in schwarzer Farbe, da ich einen roten Farbton benötigte,ändere ich die Farbe mit Gimp in rot.BEARBEITEN:
Wie von btate in seinem Kommentar erwähnt, muss die Farbe nicht mit dem Bildeditor geändert werden. Der folgende Code sollte den Trick machen:
Dann habe ich eine Ansicht erstellt, die eine Bildansicht mit diesem Pfeil, eine Beschriftung mit dem benutzerdefinierten Text enthält, und über der Ansicht habe ich eine Schaltfläche mit einer Aktion. Dann habe ich eine einfache Animation hinzugefügt (Fading und Übersetzung).
Der folgende Code simuliert das Verhalten der Zurück-Schaltfläche einschließlich der Animation.
BEARBEITEN:
Anstatt die Schaltfläche hinzuzufügen, ist es meiner Meinung nach besser, einen Gestenerkenner zu verwenden.
quelle
imageView.tint = [UIColor redColor]
und Vorlagen-Rendering-Modus für das Bild.imageView.image = [yourImage imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
Ich bin nicht sicher, ob dies funktionieren würde, aber Sie könnten versuchen, eine
UINavigationController
mit den Standardeinstellungen zu erstellen, um die Schaltfläche zu erstellen, die Schaltfläche in der Unteransichtshierarchie des Navigationscontrollers zu finden, sie aufzurufenremoveFromSuperview
, den Navigationscontroller zu zerstören und dann die Schaltfläche als hinzuzufügen eine Unteransicht Ihrer Symbolleiste. Möglicherweise müssen Sie auchretain
die Schaltfläche und die Schaltfläche vor dem AufrufremoveFromSuperview
(und dannrelease
nach dem Hinzufügen als Unteransicht Ihrer Symbolleiste) verwenden, um zu vermeiden, dass sie während des Vorgangs freigegeben wird.quelle
So erstellen Sie einen UIButton mit einem Pfeil ziemlich nahe (ich bin kein Designer;) am hinteren Pfeil des iOS 7-Systems:
Standard:
Apple SD Gothic Neo
In Xcode:
Ref @ staticVoidMans Antwort auf den rückseitigen Pfeil unter iOS 7
quelle
Wenn Sie sich nicht mit Bilddateien beschäftigen möchten, kann die Pfeilform in einer UIView-Unterklasse mit dem folgenden Code gezeichnet werden:
Dabei ist die Pfeilansicht proportional zu einer Breite von 6,0 und einer Höhe von 10,0
quelle
Funktioniert bei mir. Ich habe dies verwendet, wenn ich mehr Registerkarten hatte, als in die Registerkartenleiste passen konnten, und ein Ansichts-Controller, der von "Mehr" gedrückt wurde, das leftBarButtonItem in seiner viewDidLoad überschrieb.
quelle
Sie finden die Quellbilder, indem Sie sie aus Other.artwork in UIKit $ {SDKROOT} /System/Library/Frameworks/UIKit.framework/Other.artwork extrahieren. Die Modding - Community hat einige Werkzeuge für sie zu extrahieren, hier . Sobald Sie das Bild extrahiert haben, können Sie Code schreiben, um es nach Bedarf neu einzufärben und als Schaltflächenbild festzulegen. Ob Sie so etwas tatsächlich versenden können oder nicht (da Sie abgeleitete Kunstwerke einbetten), ist möglicherweise ein wenig schwierig. Vielleicht möchten Sie mit einem Anwalt sprechen.
quelle
Die Three20-Bibliothek bietet folgende Möglichkeiten:
quelle
Ich fand, dass die Verwendung des folgenden einfachen Codes den Trick machte (erfordert ein benutzerdefiniertes Bild im Bundle):
quelle
Folgendes habe ich getan, nachdem ich all diese und andere Lösungen durchsucht hatte. Es werden dehnbare PNGs verwendet, die aus den UIKit-Archivbildern extrahiert wurden. Auf diese Weise können Sie den Text auf das einstellen, was Sie möchten
quelle
Mit Interface Builder in Xcode 5.x ist das ganz einfach
Verwenden Sie die Symbolleiste und das Balkenschaltflächenelement aus der Objektbibliothek
Bearbeiten Sie im Attributinspektor der Schaltfläche den Abschnitt Bild mit Ihrem Bild der hinteren Schaltfläche
Getan!
quelle
Ich habe versucht, dasselbe zu tun, aber ich wollte, dass sich die Zurück-Schaltfläche in der Navigationsleiste befindet. (Ich brauchte tatsächlich eine Zurück-Schaltfläche, die mehr als nur das Zurückgehen bedeutet, also musste ich die Eigenschaft leftBarButtonItem verwenden). Ich habe versucht, was AndrewS vorgeschlagen hat, aber in der Navigationsleiste würde es nicht so aussehen, wie es sollte, da der UIButton in ein UIBarButtonItem umgewandelt wurde.
Aber ich habe einen Weg gefunden, dies zu umgehen. Ich habe gerade eine UIView unter den UIButton gestellt und die customView für das UIBarButtonItem festgelegt. Hier ist der Code, wenn jemand ihn braucht:
quelle
Um ein Bild für die UIToolbar zu erstellen, erstellen Sie in Photoshop ein PNG. Wenn eine Farbe vorhanden ist, wird es weiß angezeigt. Wenn Alpha = 0 ist, wird es in Ruhe gelassen.
Das SDK setzt den Rand um das von Ihnen erstellte Symbol und färbt es weiß, ohne dass Sie etwas tun müssen.
Sehen Sie, das habe ich in Photoshop für meine Vorwärtsschaltfläche gemacht (tauschen Sie es offensichtlich gegen die Zurückschaltfläche aus):
http://twitpic.com/1oanv
und so sah es in Interface Builder aus
http://twitpic.com/1oaoa
quelle
Lösung OHNE Verwendung eines PNG. Basierend auf dieser SO-Antwort: Hinzufügen des kleinen Pfeils auf der rechten Seite einer Zelle in einer iPhone TableView-Zelle
Einfach die UITableViewCell horizontal drehen!
quelle
Swift 5.2 Xcode 11.4
Das Apple Symbol chevron.left ermöglicht jetzt eine elegantere Lösung, um eine benutzerdefinierte Schaltfläche zu erstellen . Ich habe die Größe und den Abstand so genau wie möglich angepasst.
Dies kann entweder als
UIToolbarItem
oder als implementiert werdenUINavigationItem
Wenn Sie die Schaltfläche umlegen möchten und der Pfeil nach rechts zeigt:
Verwenden Sie das Apple-Symbol mit dem Namen "chevron.right".
Fügen Sie der
CustomBackButton
Klasse den folgenden Code hinzu :quelle
Wenn Sie vermeiden möchten, es selbst zu zeichnen, können Sie die undokumentierte Klasse UINavigationButton mit Stil 1 verwenden. Dies kann natürlich verhindern, dass Ihre Anwendung genehmigt wird ... / John
quelle
Nun, Sie müssen nicht für jede Größe eine andere Schaltfläche haben, die Sie verwenden können
[UIImage stretchableImageWithLeftCapWidth:topCapHeight:]
, aber das einzige, was ich gefunden habe, sind benutzerdefinierte Bilder.quelle
Ich hatte ein ähnliches Problem und kam aus einer Bibliothek PButton heraus . Das Beispiel ist die Schaltfläche für die Zurück-Navigationstaste, die wie eine benutzerdefinierte Schaltfläche überall verwendet werden kann.
Etwas wie das:
quelle
Beispiel in Swift 3 mit einer vorherigen und einer nächsten Schaltfläche oben rechts.
quelle
Schnell
quelle
Versuche dies. Ich bin sicher, dass Sie kein Bild mit der Schaltfläche "Zurück" benötigen, um ein solches zu erstellen.
Das ist alles was du tun musst :)
quelle
Warum tust du das? Wenn Sie etwas möchten, das wie eine Navigationsleiste aussieht, verwenden Sie UINavigationBar.
Symbolleisten haben einen bestimmten visuellen Stil. Die Richtlinien für die Benutzeroberfläche für den iPhone-Status:
Anschließend werden einige visuelle Beispiele für ungefähr quadratische Symbole ohne Text angezeigt. Ich möchte Sie dringend bitten, diesbezüglich dem HIG zu folgen.
quelle