2012-03-26 5 views
19

Mam uniwersalną aplikację, która używa storyboardów. Istnieje storyboard na iPhone'a i storyboard na iPada. Jednak w konstruktorze interfejsów kontrolery widoków dla storyboardu na iPada nadal mają rozmiar dla iPhone'a. Jak uzyskać tablicę na iPada, aby wyświetlać kontrolery widoku wielkości iPada?Scenorys Xcode: dlaczego w serii ujęć na iPada są wyświetlane widoki wielkości iPhone'a?

Zdaję sobie sprawę, że wyświetlanie kontrolera widoku w konstruktorze interfejsów to efekt wizualnego oka, ale posiadanie iPhone'owych VCs bardzo utrudnia prawidłowe ułożenie interfejsu użytkownika.

Odpowiedz

53

Po kilku przeglądach kodu źródłowego scenorysów okazuje się, że scenorys na iPada został skopiowany z serii na iPhone'a. Tak więc pytanie naprawdę stało się, w jaki sposób mogę przekształcić scenorię iPhone'a w storyboard na iPada?

Odpowiedź jest zaskakująco prosta. Natknąłem this SO answer - przekonwertować storyboard iPhone do ujęć iPad, wykonaj następujące czynności:

  1. Od Xcode, kliknij prawym przyciskiem myszy w serii ujęć i wybrać Otwórz jako -> kod źródłowy

  2. Szukaj targetRuntime="iOS.CocoaTouch" i zmienić go na targetRuntime="iOS.CocoaTouch.iPad"

  3. prawym przyciskiem myszy na storyboard ponownie i wybierz Otwórz jako -> iOS Storyboard

W serii ujęć będą teraz wyświetlane wszystkie widoki w prawidłowym rozmiarze.

+0

Dziękuję bardzo. To doprowadzało mnie do szału. – rmvz3

+1

Dziękuję Michael! Na marginesie można to również zrobić na XIB. Element główny XIB xml (tag dokumentu) ma to samo odniesienie do "targetRuntime". Rób tak, jak Michael radzi. – bladnman

+0

Zrobiłem to i teraz pokazuje tylko iPada do podglądu (iPhone'ów już nie ma). Jakiś pomysł, dlaczego? – Kashif

7

Po utworzeniu storyboardu wybierasz rodzinę urządzeń (iPhone lub iPad), na którą przeznaczony jest scenorys. Nie wiem, jak zmienić rodzinę urządzeń po utworzeniu storyboardu.

Jednak, aby rozwiązać swój problem polecam następujące:

Utwórz nowy storyboard, przechodząc do: New -> Plik -> User Interface -> Storyboard (należy wybrać Device Family = iPada przy wyborze opcje.)

Przejdź do swojego starego storyboardu, wybierz i skopiuj wszystko, naciskając Command-A, Command-C. Następnie przejdź do swojego i wklej wszystko, naciskając Command-V. Twoje kontrolery widoku będą teraz miały rozmiar na iPada.

Następnie można usunąć stary scenorys i zmienić nazwę nowego storyboardu na stare imię.

+0

Wydaje się dziwne, że można skopiować lub wkleić całą planszę historii. –

+0

Wow, nie miałem pojęcia, że ​​to możliwe, dzięki! Działa świetnie. – tcd

+0

Po utworzeniu nowego scenorysu nie mogę wybrać rodziny urządzeń. Wersja Xcode to 6.2. – septerr

0

Skorzystałem z sugerowanej odpowiedzi, aby przekonwertować scenorię iPhone'a na tablicę na iPada i działało doskonale dla większości moich widoków. Jednak zdałem sobie sprawę, że jeden z poglądów nadal był wielkością iPhone'a. Powodem było to, że zablokowałem wszystkie właściwości jednego obrazu tła (ponieważ nie chciałem przypadkowo go przenieść). Usunięcie blokady zmieniło widok z powrotem na rozmiar iPada. To może pomóc komuś w tym tkwić.

+0

Skopiowałem również scenorię iPhone'a dla iPada i wszystkie widoki działają dobrze tylko z 2 widokami tekstu. Czy możesz mi powiedzieć, jak wyłączyć tę blokadę lub gdzie jest ta opcja, ponieważ nie zablokowałem niczego na moim albumie z iPhone'em. Dzięki – Husyn

0

Upewnij się, że ustawiłeś odpowiednią scenę w Target> Ogólne. To trochę boli mnie przez 3 godziny, zanim zdaję sobie sprawę, że ustawiam ten sam scenariusz dla iPhone'a jako mój storyboard na iPada.

0

Zmiana parametru targetRunTime nie działała dla mnie w Xcode 6.2, jednak ta druga metoda ręcznego kopiowania widoków rozwiązała problem.

3

Ta odpowiedź nie jest rozwiązaniem, ale pomoże uzyskać jeden z powodów, dla których takie rzeczy się zdarzają.

Problem pojawia się przy próbie wyłączenia:

"Use Auto Layout"

Gdy go odznaczyć, pojawi się okienko. Jest wybierz:

"Zachowaj dane klasy wielkości dla: iPhone"

, domyślnie jest zaznaczona iPhone (bez względu na iPad lub iPhone projekt został utworzony).

Jeśli nie wspominając o tym, twój storyboard będzie automatycznie konwertowane do iPhone rozmiarach.

Nie zapomnij wybrać właściwego urządzenia.

+0

Cool !! ten zrobił to dla mnie – becker