Chciałbym utworzyć przycisk „wstecz” ze strzałką w lewo w ramce UIToolbar
.
O ile mogę stwierdzić, jedynym sposobem na uzyskanie jednego z nich jest pozostawienie UINavigationController
domyślnych ustawień i używa jednego dla elementu lewego paska. Ale nie ma sposobu, żebym mógł stworzyć taki jako UIBarButtonItem
, więc nie mogę zrobić go w standardzie UIToolbar
, nawet jeśli są bardzo podobne do UINavigationBar
s.
Mógłbym ręcznie utworzyć go za pomocą obrazów przycisków, ale nigdzie nie mogę znaleźć obrazów źródłowych. Mają krawędzie kanału alfa, więc zrzuty ekranu i wycinanie nie dają bardzo wszechstronnych rezultatów.
Jakieś pomysły poza zrzutami ekranu dla każdego rozmiaru i schematu kolorów, które zamierzam zastosować?
Aktualizacja: PROSZĘ PRZERWAĆ unikanie pytania i sugerowanie, że nie powinienem o to pytać i powinienem go używać UINavigationBar
. Moja aplikacja to Instapaper Pro. Pokazuje tylko dolny pasek narzędzi (aby zaoszczędzić miejsce i zmaksymalizować czytelny obszar zawartości), a na dole chcę umieścić przycisk Wstecz w kształcie strzałki w lewo.
Mówienie, że nie powinienem tego robić, nie jest odpowiedzią i na pewno nie zasługuje na nagrodę.
Odpowiedzi:
Użyłem następującego psd, który otrzymałem z http://www.teehanlax.com/blog/?p=447
http://www.chrisandtennille.com/pictures/backbutton.psd
Właśnie utworzyłem niestandardowy UIView, którego używam we właściwości customView elementu paska narzędzi.
Działa dla mnie dobrze.
Edycja: Jak wskazał PrairieHippo , maralbjo stwierdził, że używając następującego prostego kodu załatwił sprawę (wymaga niestandardowego obrazu w pakiecie) należy połączyć z tą odpowiedzią. Oto dodatkowy kod:
źródło
Metoda Unicode
Myślę, że o wiele łatwiej jest po prostu użyć znaku Unicode, aby wykonać zadanie. Możesz przeglądać strzałki, przeglądając trójkąty Unicode lub Strzałki Unicode . Począwszy od iOS6 Apple zmieniło znak na emoji z obramowaniem. Aby wyłączyć granicę, dodaję selektor wariacji Unicode 0xFE0E .
Blok kodu jest tylko dla wersji demonstracyjnej. Działa w każdym przycisku, który akceptuje NSString.
Aby uzyskać pełną listę znaków, wyszukaj w Google znak Unicode i co chcesz. Oto wpis dotyczący czarnego trójkąta skierowanego w lewo .
Wynik
źródło
OSTRZEŻENIE: Istnieją doniesienia, że nie będzie to działać w systemie iOS 6. Może to działać tylko w starszych wersjach systemu operacyjnego. Najwyraźniej przynajmniej jeden deweloper odrzucił swoją aplikację za użycie tej sztuczki (patrz komentarze). Używaj na własne ryzyko. Korzystanie z obrazu (patrz odpowiedź powyżej) może być bezpieczniejszym rozwiązaniem.
Można to zrobić bez dodawania własnych plików obrazów za pomocą przycisku sekr1t typ 101, aby uzyskać prawidłowy kształt. Dla mnie sztuczka polegała na ustaleniu, że mogę użyć
initWithCustomView
do stworzeniaBarButtonItem
. Osobiście potrzebowałem tego zamiast dynamicznego paska nawigacyjnegotoolbar
, ale przetestowałem go z paskiem narzędzi, a kod jest prawie taki sam:Jeśli robisz to na pasku narzędzi, musisz dostosować sposób ustawiania elementów, ale to zależy od reszty kodu i pozostawiam to jako ćwiczenie dla czytelnika. : P Ta próbka działała dla mnie (skompilowana i uruchomiona).
Bla bla, czytaj HIG, nie używaj nieudokumentowanych funkcji i tak dalej. Istnieje tylko sześć obsługiwanych typów przycisków i nie jest to jeden z nich.
źródło
Przede wszystkim musisz znaleźć obraz przycisku Wstecz. Użyłem ładnej aplikacji o nazwie Extractor, która wyodrębnia całą grafikę z iPhone'a. W iOS7 udało mi się pobrać obraz o nazwie
UINavigationBarBackIndicatorDefault
i był on w kolorze czarnym, ponieważ potrzebowałem czerwonego odcienia, zmieniam kolor na czerwony za pomocą Gimp.EDYTOWAĆ:
Jak wspomniano w komentarzu btate , nie ma potrzeby zmiany koloru za pomocą edytora obrazów. Poniższy kod powinien załatwić sprawę:
Następnie stworzyłem widok zawierający imageView ze strzałką, etykietę z niestandardowym tekstem, a na górze widoku mam przycisk z akcją. Następnie dodałem prostą animację (zanikanie i tłumaczenie).
Poniższy kod symuluje zachowanie przycisku Wstecz, w tym animacji.
EDYTOWAĆ:
Zamiast dodawać przycisk, moim zdaniem lepszym rozwiązaniem jest użycie rozpoznawania gestów.
źródło
imageView.tint = [UIColor redColor]
trybu renderowania odcienia i szablonu na obrazie.imageView.image = [yourImage imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate];
Nie jestem pewien, czy to zadziała, ale możesz spróbować utworzyć
UINavigationController
z domyślnymi ustawieniami, aby utworzyć przycisk, znaleźć przycisk w hierarchii podglądu kontrolera nawigacyjnego, wywołaćremoveFromSuperview
go, zniszczyć kontroler nawigacyjny, a następnie dodać przycisk jako widok paska narzędzi. Konieczne może być równieżretain
przycisk i przycisk przed wywołaniemremoveFromSuperview
(a następnierelease
po dodaniu go jako podgląd paska narzędzi), aby uniknąć cofnięcia przydziału w trakcie procesu.źródło
Aby zrobić UIButton ze strzałką całkiem blisko (nie jestem projektantem;) do strzałki wstecz systemu iOS 7:
Standard:
Apple SD Gothic Neo
W Xcode:
Ref @ staticVoidMan Odpowiedź na strzałkę podobną do Back na iOS 7
źródło
Jeśli nie chcesz zawracać sobie głowy plikami plików, kształt strzałki można narysować w podklasie UIView za pomocą następującego kodu:
gdzie widok strzałki jest proporcjonalny do szerokości 6,0 i wysokości 10,0
źródło
Pracuje dla mnie. Użyłem tego, gdy miałem więcej kart, a potem mogłem zmieścić się na pasku kart, a kontroler widoku wypchnięty z „Więcej” zastąpił leftBarButtonItem w jego viewDidLoad.
źródło
Możesz znaleźć obrazy źródłowe, wyodrębniając je z Other.artwork w UIKit $ {SDKROOT} /System/Library/Frameworks/UIKit.framework/Other.artwork. Wspólnota modding ma kilka narzędzi do ich wydobycia, tutaj . Po wyodrębnieniu obrazu możesz napisać kod, aby go odpowiednio pokolorować i ustawić jako obraz przycisku. To, czy rzeczywiście możesz wysłać taką rzecz (ponieważ osadzasz dzieła pochodne), może być trochę ryzykowne, więc może chcesz porozmawiać z prawnikiem.
źródło
Biblioteka Three20 ma na to sposób:
źródło
Odkryłem, że użycie następującego prostego kodu rozwiązało problem (wymaga niestandardowego obrazu w pakiecie):
źródło
Oto, co skończyłem po przeszukaniu wszystkich tych i innych rozwiązań. Wykorzystuje rozciągliwy png wyodrębniony z obrazów stockowych UIKit. W ten sposób możesz ustawić tekst na cokolwiek zechcesz
źródło
Łatwo jest to zrobić za pomocą Konstruktora interfejsów w Xcode 5.x
użyj paska narzędzi i elementu przycisku paska z biblioteki obiektów
w przycisku, Atrybuty inspektor edycji obrazu sekcji z Twojego przycisk BACK obrazu
Gotowy!
źródło
Próbowałem zrobić to samo, ale chciałem, aby przycisk Wstecz znajdował się na pasku nawigacyjnym. (Właściwie potrzebowałem przycisku Wstecz, który zrobiłby więcej niż tylko powrót, więc musiałem użyć właściwości leftBarButtonItem). Próbowałem tego, co sugerował AndrewS, ale na pasku nawigacyjnym nie wyglądało to tak, jak powinno, ponieważ UIButton był w pewnym sensie rzutowany na UIBarButtonItem.
Ale znalazłem sposób na obejście tego. Właściwie po prostu umieszczam UIView pod UIButton i ustawiam customView dla UIBarButtonItem. Oto kod, jeśli ktoś go potrzebuje:
źródło
Aby utworzyć obraz dla paska narzędzi UITool, zrób png w Photoshopie i GDZIEKOLWIEK istnieje jakikolwiek kolor, który nadaje mu biały kolor, a gdzie jest alfa = 0, to pozostawia go w spokoju.
Zestaw SDK faktycznie umieszcza ramkę wokół utworzonej ikony i zmienia kolor na biały bez konieczności robienia czegokolwiek.
Zobacz, oto, co zrobiłem w Photoshopie dla mojego przycisku przewijania do przodu (oczywiście zamień go na przycisk wstecz):
http://twitpic.com/1oanv
i tak to wyglądało w Konstruktorze interfejsów
http://twitpic.com/1oaoa
źródło
Rozwiązanie BEZ użycia png. W oparciu o tę odpowiedź SO: Dodanie małej strzałki po prawej stronie komórki w komórce iPhone TableView
Wystarczy obrócić UITableViewCell w poziomie!
źródło
Swift 5.2 Xcode 11.4
Chevron.left Apple Symbol pozwala teraz na bardziej eleganckie rozwiązanie, aby utworzyć niestandardowy przycisk. Dopasowałem rozmiar i odstępy tak blisko, jak to możliwe.
Można to zaimplementować jako a
UIToolbarItem
lubUINavigationItem
Jeśli chcesz obrócić przycisk i strzałka skierowana jest w prawo:
Użyj symbolu Apple o nazwie „chevron.right”
Dodaj następujący kod do
CustomBackButton
klasy:źródło
Jeśli chcesz uniknąć rysowania go samemu, możesz użyć nieudokumentowanej klasy: UINavigationButton ze stylem 1. To oczywiście może uniemożliwić zatwierdzenie twojego wniosku ... / John
źródło
Cóż, nie musisz mieć innego przycisku dla każdego rozmiaru, możesz użyć
[UIImage stretchableImageWithLeftCapWidth:topCapHeight:]
, ale jedyne, co znalazłem, to niestandardowe obrazy.źródło
Miałem podobny problem i wyszedłem z jednej biblioteki PButton . Przykładem jest przycisk nawigacyjny z tyłu podobny do przycisku, którego można używać w dowolnym miejscu, podobnie jak przycisk dostosowany.
Coś takiego:
źródło
Przykład w Swift 3, z poprzednim i następnym przyciskiem w prawym górnym rogu.
źródło
Szybki
źródło
Spróbuj tego. Jestem pewien, że nie potrzebujesz obrazu przycisku wstecz, aby go utworzyć.
To wszystko co musisz zrobić :)
źródło
Dlaczego to robisz? Jeśli chcesz czegoś, co wygląda jak pasek nawigacji, użyj UINavigationBar.
Paski narzędzi są powiązane z określonym stylem wizualnym. Wytyczne Human Interface dla iPhone'a:
Następnie podaje kilka wizualnych przykładów z grubsza kwadratowych ikon bez tekstu. Zachęcałbym was do śledzenia HIG w tej sprawie.
źródło