Jak zrobić UISegmentedControl
jako część UINavigationBar
poniższego? Czy jest podłączony do kontrolera widoku, UINavigationBar
czy jest to kompletny oddzielny widok, który został właśnie dodany jako widok podrzędny do UINavigationController
kontrolera widoku. Wygląda na to, że jest to część, UINavigationBar
ponieważ pod paskiem jest cień.
ios
uinavigationbar
uisegmentedcontrol
yoeriboven
źródło
źródło
Odpowiedzi:
To prosty efekt do osiągnięcia.
Najpierw umieść segment na pasku narzędzi. Umieść ten pasek narzędzi bezpośrednio pod paskiem nawigacji. Ustaw delegata paska narzędzi na kontroler widoku i wróć
UIBarPositionTopAttached
do programupositionForBar:
. W aplikacji sklepu możesz zobaczyć, że wykonując interaktywny gest pop, pasek segmentu nie porusza się tak samo jak pasek nawigacji. To dlatego, że to nie ten sam pasek.Teraz, aby usunąć linię włosów. „Linia włosa” to
UIImageView
widok częściowy paska nawigacji. Możesz go znaleźć i ustawić jako ukryty. To właśnie robi na przykład Apple w swojej natywnej aplikacji kalendarza, a także w aplikacji sklepu. Pamiętaj, aby pokazać go, gdy bieżący widok zniknie. Jeśli trochę pobawisz się aplikacjami Apple, zobaczysz, że linia włosów jest ukrytaviewWillAppear:
i pokazana wviewDidDisappear:
.Aby uzyskać styl paska wyszukiwania, po prostu ustaw go
searchBarStyle
naUISearchBarStyleMinimal
.źródło
initWithRect: CGRectMake(0, self.toplayoutGuide.length, 320, 44)
, czy może użyć autoukładu, aby ją ustawić? Jaka będzie nowa górna część ChildViews, czy to będzieself.toplayoutGuide.length + 44
?Innym podejściem byłoby poszukanie linii włosów i przeniesienie jej poniżej dodanego paska narzędzi. Oto co wymyśliłem.
Zauważyłem również, że przykładowy kod Apple NavBar (Customizing UINavigationBar) jest bardzo pomocny w rozwiązaniu tego problemu.
Pamiętaj również, aby obsłużyć górną krawędź paska narzędziowego UIT , może się pojawić i możesz pomylić go z linią paska NavBar. Chciałem również, aby pasek narzędzi UIT wyglądał dokładnie tak, jak pasek NavBar, prawdopodobnie chcesz wtedy dostosować paski narzędzi
barTintColor
.źródło
Oto podejście Protocol Oriented Swift do tego konkretnego problemu, na podstawie zaakceptowanej odpowiedzi:
HideableHairlineViewController.swift
SampleViewController.swift
źródło
shadowImage
własnością paska nawigacji.Pasek nawigacji z UISegmentedControl można znaleźć w przykładowym kodzie Apple: https://developer.apple.com/library/ios/samplecode/NavBar/Introduction/Intro.html
Lub możesz utworzyć go programowo, oto kod w mojej odpowiedzi w innym wątku Dodaj segmentowaną kontrolę do paska nawigacji i zachowaj tytuł za pomocą przycisków
źródło
Chciałem zrobić to samo ... I otrzymałem to:
1 - podklasa UINavigationBar
2 - Ustaw NavigationController z podklasą
3 - Dodaj UISegmentedControl w navigationBar
4 - Run and Fun -> nie zapomnij umieścić tego samego koloru na obu
źródło wyszukiwania:
Hakowanie UINavigationBar
SO pytanie
źródło
UINavigationButton
jest to prywatny interfejs API i Twoja aplikacja zostanie odrzucona za korzystanie z niego. Powinieneś spróbować zamaskować użycie tej klasy.Apple ma przykładową aplikację specjalnie do tego. Opisuje ustawianie przezroczystego obrazu cienia i kolorowego obrazu tła dla paska nawigacji oraz sposób konfigurowania widoku poniżej paska nawigacji. Zawiera również przykłady innych dostosowań paska nawigacji.
Zobacz https://developer.apple.com/library/ios/samplecode/NavBar/Introduction/Intro.html
źródło
Próbowałem usunąć linię włosów metodą @ Simona, ale to nie zadziałało. Prawdopodobnie robię coś złego, ponieważ jestem super noobem. Jednak zamiast usuwać linię, możesz ją po prostu ukryć za pomocą
hidden
atrybutu. Oto kod:Mam nadzieję, że to komuś pomoże!
źródło
UISegmentedControl poniżej UINavigationbar w swift 3/4
Detale
Xcode 9.2, swift 4
Pełna próbka
Wyniki
źródło
UINavigationController
?Jest wiele sposobów na zrobienie tego, o co prosiłeś. Najłatwiej jest oczywiście po prostu utworzyć go w narzędziu do tworzenia interfejsu, ale zakładam, że nie o to Ci chodziło. Stworzyłem przykładowe zdjęcie, które zamieściłeś powyżej. To nie jest dokładnie to samo, ale możesz bawić się licznymi właściwościami, aby uzyskać wygląd i styl tego, czego szukasz.
W ViewController.h
W pliku ViewController. M
źródło
wyświetlaSearchBarInNavigationBar to sposób wyświetlania paska wyszukiwania, a także paska zakresu na pasku nawigacji.
musisz po prostu ukryć pasek wyszukiwania za każdym razem, gdy pokazujesz niestandardowy tytuł
źródło