Ändern Sie die Breite ein UIBarButtonItem in eine UINavigationBar
Erstelle ich ein UIBarButtonItem und hinzufügen zu meiner navigation bar, wie so:
(void)viewDidLoad {
...
//Add the refresh button to the navigation bar
UIButton *refreshButton = [UIButton buttonWithType:UIButtonTypeCustom];
[refreshButton setFrame:CGRectMake(0,0,30,30)];
[refreshButton setImage:[UIImage imageNamed:@"G_refresh_icon.png"] forState:UIControlStateNormal];
[refreshButton addTarget:self action:@selector(refreshData) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *refreshBarButton = [[[UIBarButtonItem alloc] initWithCustomView:refreshButton] autorelease];
self.navigationItem.leftBarButtonItem = refreshBarButton;
}
Sieht es richtig, wenn ich laufen, aber ich kann wählen Sie die bar-Taste Element durch Tippen auf die Navigationsleiste überall von x = 0 bis etwa 100. Wie kann ich einstellen das der wählbare Bereich auf eine Breite von 30 px?
InformationsquelleAutor der Frage Darren | 2012-06-11
Schreibe einen Kommentar Antworten abbrechen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Einen Ansatz könnte man erwägen ist die Schaffung eines
UIBarButtonItem
durch den AufrufinitWithCustomView:
. Dies ist nicht ideal, da Sie nicht bekommen, "ausgewählten" Staaten aus der box UND Sie haben, um composite Ihr grenzt hintergrund (wenn Sie möchten, dass Aussehen) mit Ihren Bild-Taste, aber mit, dass Sie mehr geben Sie direkt einen Rahmen für Ihre toolbar-Element. Wenn Sie text für den Titel ein statt Bilder können Sie noch brauchen, fügen Sie in einem hintergrund-Bild als Untersicht. Wie auch immer, ich bin mit dem gleichen problem und jetzt dieser code funktioniert bei mir:Momentan ist dies die einzige Möglichkeit, die ich kenne, beschränken die auto-sizing der
UIBarButtonItem
s Hinzugefügt, um dieUINavigationController
'snavigationItem
.Oder versuchen Sie, Maggie-Lösung, die ist genauer, als meine.
InformationsquelleAutor der Antwort Aaron
Seit iOS 11, nur die Einstellung frame für
customView
und nichtUIBarButtonItem
funktioniert nicht (wie vorgeschlagen, in akzeptierte Antwort). Es scheint, wie das hinzufügen von Autolayout, umUIBarButtonItem
überschreibt den Rahmen setzen.Dieser Beitrag hat mich auf die Idee:
Beachten Sie außerdem, dass es bevorzugt ist, dass Sie verwenden
UIButton
als IhreCustomView
wie müssen Sie sich darauf verlassen, das die Aktion auslöst.InformationsquelleAutor der Antwort roxanneM
Können Sie es tun, indem Sie ein Bild in die bar button item aus dem interface-builder und die änderung der Breite der benutzerdefinierte Ansicht mit diesem code:
InformationsquelleAutor der Antwort odm
Das wichtigste dabei ist, zu erkennen, dass Sie ändern Sie die benutzerdefinierte Ansicht ist die Breite, anstatt die
UIBarButton
selbst.Der code ist:
Müssen Sie auch auslösen, das layout ändern:
All dies geht ohne zu sagen, dass das layout erfolgt mit Automatischer Größenanpassung und frames. Einfälle in Navigationsleisten mit Auto-Layout-ergab kein Erfolg. Siehe meine Frage Auto-Layout mit UINavigationBar und UIBarButtonItem.
Sorry gerade gemerkt, dass mein code ist fast identisch mit @oscartzombie. Nicht absichtlich! Ich lasse diese Antwort, da ich denke, es lohnt sich hinzufügen, das layout und andere Punkte, zusätzlich zu erklären, ohne Bezug auf das Interface Bootsbauer überholen lassen oder Bilder speziell.
InformationsquelleAutor der Antwort Max MacLeod
Den folgenden Ansatz gearbeitet, siehe code-ändern Sie die Breite und Höhe der Schaltfläche zu klicken und hinzufügen-action-Element sowie.
Hinweis: Das Ziel und handeln der UIBarButtonItem gilt nicht für-Bild-Ansicht
InformationsquelleAutor der Antwort Abdullah Saeed