14

Mam dziwny, którego nie mogę naprawić. Obecnie pracuję nad aktualizacją mojej aplikacji na iOS7. To wszystko działało w iOS6. Jest to aplikacja uniwersalna i dlatego używa tych samych plików XIB. Jednak iPad używa UISplitViews na niektórych. Jak już mówiłem, wszystko działało w iOS6, to wszystko działa również na iPhone'ie.UISplitView z UITabbar

Problem to szary pasek na dole. Zmieniłem pasek tabulacji, aby był nieprzezroczysty, aby poprawnie przenosić widoki, ponieważ miałem spinkę przyciętą do dołu widoku i która znajdowała się pod paskiem kart, odsunięta na bok. Ale jeśli ustawię go z powrotem w półprzezroczysty pasek, to pod spodem, ale rozciągnięty prawidłowo. jeśli nie, dodaje pasek. Inne zakładki działają poprawnie, gdy NIE używasz splitview.

UISplitviewController jest dodawany programowo.

Zobacz załączony obraz, aby uzyskać lepszy opis.

The grey bar is between my splitview and tabbar

to próbowałem:

  • Dodany AUTORESIZE na splitview
  • sprawdzone XIb do subviews w splitviews mieć auto rozmiaru
  • próbował zmusić splitview być granice ekranu
  • Usunięto klipy do granic wszystkich widoków
  • Usuń d autorezminizować subviews

Wszelkie pomysły byłyby mile widziane.

Dziękuję wszystkim.

UPDATE:

ustawienie koloru tle uisplitview, robi kolor bar czarny. Tak więc uisplitview zdecydowanie się do niego zbliża.

+0

Witaj MashDup, próbuję implementować kontrolery Splitview w kartach. Czy możesz mi wskazać, jak można to zrobić? –

Odpowiedz

30

Podklasy UISplitViewController i dodał wiersz poniżej, aby viewDidLoad i że ustalono szare linii.

self.extendedLayoutIncludesOpaqueBars = YES; 
+1

niesamowite, dziękuję. Przeczytałem to i natknąłem się na tę stronę, która pomogła więcej. dobre odniesienie dla każdego, kto ma problemy z widokami. http://www.brianjcoleman.com/ios7-weve-got-a-problem/ – mashdup

+3

Możesz ustawić tę właściwość również bezpośrednio w pliku .xib w/out podklasie ... istnieją 3 rozszerzenia właściwości, które możesz skonfigurować. – konran

+1

+1 za postawienie mnie na właściwej drodze; z powodów nieznanych w moim przypadku musiałem sprawdzić jedną z innych właściwości rozszerzania, aby pozbyć się szarego paska. – mvds

5

Uważam, że znalazłem dla ciebie alternatywne rozwiązanie. Miałem dokładnie ten sam problem, głównie dlatego, że obaj robimy coś przeciwko Wytycznym Apple, które ma SplitViewController zagnieżdżony w kontrolerze Tabbar (SplitView powinien być głównym widokiem). To było w porządku w iOS 5/6, ale teraz w iOS 7 jest zdecydowanie zbyt wiele efektów ubocznych, aby to osiągnąć.

Powód, dla którego widok jest rozciągany całkowicie po ustawieniu paska jako półprzezroczystego, jest taki, że pasek NIE jest brany pod uwagę podczas rysowania widoku. Kiedy ustawisz półprzezroczystość na fałsz, wtedy bierzesz pod uwagę widok i zobaczysz tam szary pasek, ponieważ to twój widok udaje, że w dolnej części ekranu znajduje się pasek zakładek.

Jak zwykle, wysokość kontrolera SplitView nie może zostać zmieniona, ponieważ jest określana przez widoczną wysokość okna.

Próbowałem wszystkiego, co zrobiłeś, a następnie niektóre. Prawdziwym rozwiązaniem było użycie kontrolera Split View innej firmy.

Polecam przełączyć na https://github.com/mattgemmell/MGSplitViewController. Ten kontroler widoku podzielonego jest w rzeczywistości jednym dużym widokiem, w którym znajdują się widoki kontenerów. Z tego powodu unikasz wszystkich skutków ubocznych związanych z umieszczaniem rzeczywistego kontrolera widoku podzielonego na pasku kart.

Jeśli to nie unosi twojej łodzi, możesz stworzyć własne rozwiązanie, które będzie zgodne z tym samym pomysłem posiadania jednego kontrolera UIViewController z dwoma zawartymi w nim widokami kontenerów, chociaż ludzie stojący za MGSplitViewController już to wykonali.

To był jedyny sposób, w jaki mogłem rozwiązać ten problem, daj mi znać, jeśli znajdziesz alternatywę.

+0

Przechodzę, aby zaakceptować twoją odpowiedź i tak, wypróbowałem MGSplitViewController. W końcu tego nie zrobiłem. Rozwiązanie pozwalające mi pozwolić półprzezroczystemu pasku kart i dopasować części widoku, które tego wymagają. Dziwne, tabele dostosowują się odpowiednio. Dziękuję za odpowiedź: D – mashdup

+0

Moje rozwiązanie polegało na usunięciu linii, w której ustawiłem wartość "półprzezroczystą" na NIE, teraz mój niestandardowy kontroler podziału w kontrolerze tabBarController po prostu działa. Dzięki! – quarac

0

Dla kontrolera, który jest widok szczegółów UISplitViewController po prostu to zrobić:

-(UITabBarController*)tabBarController{ 
    return nil; 
} 
2

Zamiast tworzenia podklasy dla UISplitViewController, po prostu dodaje ten kod na mój magistra viewDidLoad:

self.splitViewController?.extendedLayoutIncludesOpaqueBars = true 
Powiązane problemy