Konwersja Storyboard z iPhone na iPad
Mam iPhone
aplikację, która ma storyboard. Teraz chcę również dostarczyć iPad
aplikację. Zapytałem więc, czy istnieje funkcja, która pomaga mi przekształcić mój iPhone
storyboard w iPad
storyboard.
Konkretnie:
Czy istnieje podobna funkcja, czy jest tylko sposób ręczny ?
21 answers
Znalazłem coś w rodzaju rozwiązania:
Zduplikuj swój iPhone-Storyboard i zmień jego nazwę
MainStoryboard_iPad.storyboard
Zamknij Xcode, a następnie otwórz ten plik w dowolnym edytorze tekstu.
Wyszukaj
targetRuntime="iOS.CocoaTouch"
i zmień natargetRuntime="iOS.CocoaTouch.iPad"
-
Zmień kod w MainStoryboard_iPad.storyboard from:
<simulatedScreenMetrics key="destination" type="retina4"/>
do<simulatedScreenMetrics key="destination"/>
Teraz zapisz wszystko i ponownie otwórz Xcode. IPad-Storyboard ma taką samą zawartość jak iPhone-file, ale wszystko może zostać zdemaskowane.
To zaoszczędziło mi godziny-mam nadzieję, że to ci pomoże
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-07-24 17:19:15
Jeśli utworzyłeś uniwersalny projekt, domyślnie zostałby utworzony pusty storyboard iPada, wystarczy wybrać storyboard iPhone ' a select all (Command + A), skopiować (Command+C) i wkleić go na storyboard iPada. Upewnij się, że przed kompilacją przenieś punkt wejścia z pustego storyboardu do nowo skopiowanego storyboardu.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-12 22:45:32
To mi nie pasowało. Zrobiłem coś trochę innego.
- Utwórz nowy plik tablicy historii dla wersji ipada
- Otwórz zarówno nowy plik, jak i plik, który chcę skopiować w texttwrangler (edytor tekstu)
- skopiowano tekst xml ze starego pliku do nowego pliku pomiędzy tymi znacznikami xml
- Pierwszy Znacznik
<scenes> <!--Contents View Controller-->
- Wklej Tutaj
- Znaczniki Końca
</class> </classes>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-13 21:55:07
Czytając wiele wątków na stackoverflow odkryłem rozwiązanie to -
1.Zduplikuj swój iPhone-Storyboard i zmień jego nazwę MainStoryboard_iPad.storyboard
2.kliknij prawym przyciskiem myszy na storyboard - > "Otwórz jako" - > "kod źródłowy".
3.Search for targetRuntime= " iOS.CocoaTouch "i zmień go na targetRuntime=" iOS.CocoaTouch.iPad "
5.Wyszukaj <simulatedScreenMetrics key="destination" type="retina4"/>
i zmień na <simulatedScreenMetrics key="destination"/>
4.Teraz zapisz wszystko i kliknij prawym przyciskiem myszy na MainStoryboard_iPad.storyboard " open jako" ->"iOS StoryBoard" 5. być może będziesz musiał zmienić swoje ograniczenia. To wszystko, co zrobiłeś.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-10-24 06:17:39
1. Create New Storyboard file with MainStoryboard_iPad.storyboard
2. Copy All the views from MainStoryboard and paste to MainStoryboard_iPad.storyboard
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-05 06:22:22
1-Utwórz swoje "MainStoryboard_iPad.storyboard";
2 - Kliknij prawym przyciskiem myszy na ciebie "MainStoryboard_iPhone.storyboard"
i "Otwórz jako - > kod źródłowy". Kopiuj wszystko;
3 - Kliknij prawym przyciskiem myszy na ciebie "MainStoryboard_iPad.storyboard"
i "Otwórz jako - > kod źródłowy". Wklej wszystko. Teraz Szukaj i zmień:
targetRuntime="iOS.CocoaTouch" to targetRuntime="iOS.CocoaTouch.iPad"
type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" to type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.iPad.XIB"
4-Zapisz. Teraz otwórz ponownie, ale za pomocą Kreatora interfejsów. Będziesz musiał tylko zmienić aranżację.
Ta metoda może być używana do .pliki xib too
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-12 10:04:50
To idzie w drugą stronę, ale udało mi się zrobić select all & copy w moim iPad storyboard (~35 scen) i wkleić go do mojego iPhone storyboard. Rozmiary sceny zostały automatycznie dopasowane. Widziałem tylko dwa problemy, musiałem wymienić UISplitViewController (ponieważ to tylko iPad), a domyślne tło stało się przezroczyste zamiast szarego (nadal pracuje nad poprawnym naprawieniem, bez ręcznego ustawiania tła dla wszystkiego).
EDIT: wydaje się, że domyślne tło dla UITableView w Inspektorze atrybutów jest raczej dziwny. Musiałem ręcznie ustawić tło na "kolor tła widoku grupowego" dla grupowych widoków tabel i "Kolor Biały" Dla niezagrupowanych widoków tabel. Następnie był wyświetlany jako "domyślny" (zakładam, że wtedy dopasował wartość zakodowaną na twardo). -- Właściwie, jeszcze łatwiej, zmiana z "zgrupowane" na "Static" i powrót wydaje się resetować domyślny kolor.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-03-08 19:22:19
Oto coś, co zaoszczędziło mi godziny i może pomóc tym z Was, którzy znają się na Pythonie.
[1]} od dwóch miesięcy buduję aplikację, skupiającą się tylko na iPadu i ULEPSZAJĄCYM UX wraz z zespołem.Dzisiaj skupiliśmy się na budowaniu wersji iPhone ' a, wykonaliśmy powyższe kroki (dzięki!) ale nie chciałem wtedy zmieniać rozmiaru wszystkich elementów interfejsu użytkownika z wymiarów iPada w edytorze wizualnych scenorysów.
Więc napisałem ten mały skrypt jig Pythona do skanowania przez storyboard plik dla x, y, szerokość, wysokość i skaluj wszystko w dół o współczynnik 320./768. Pozwoliło mi to skupić się na drobnych korektach.
-
Skopiuj storyboard iPada do nowego pliku. (np. iPhoneStoryboard.storyboard)
Uruchom poniższy skrypt z skopiowaną nazwą pliku storyboard jako pierwszym parametrem.
-
Wygeneruje plik wyjściowy z sufiksem _adjusted.storyboard (np. iPhoneStoryboard.storyboard_adjusted.storyboard)
Nadzieja to pomaga...
import re
import sys
import math
afile = sys.argv[1]
scale = 320./768.
number_pattern = '[-0-9]+(.[0-9]+)?'
#width_pattern = 'width="[-0-9]+( ?px)?"'
width_pattern = 'width="[-0-9]+(.[0-9]+)?( ?px)?"'
height_pattern = 'height="[-0-9]+(.[0-9]+)?( ?px)?"'
x_pattern = 'x="[-0-9]+(.[0-9]+)?( ?px)?"'
y_pattern = 'y="[-0-9]+(.[0-9]+)?( ?px)?"'
def replacescaledvalue(scale,pattern,sometext,replacefmt) :
ip = re.search(pattern, sometext, re.IGNORECASE)
if(ip) :
np = re.search(number_pattern,ip.group(0))
if(np) :
val = float(np.group(0))
val = int(math.floor(val*scale))
sval = replacefmt+str(val)+'"'#+'px"'
newtext = re.sub(pattern,sval,sometext)
return newtext
else :
return sometext
fin = open(afile)
fout = open(afile+"_adjusted.storyboard", "wt")
for line in fin:
newline = line
newline = replacescaledvalue(scale,width_pattern,newline,'width="')
newline = replacescaledvalue(scale,height_pattern,newline, 'height="')
newline = replacescaledvalue(scale,x_pattern,newline, 'x="')
newline = replacescaledvalue(scale,y_pattern,newline, 'y="')
# print newline
fout.write( newline )
fin.close()
fout.close()
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-15 23:32:46
Przejdź do podsumowania celu i zmień urządzenia na uniwersalne, następnie przejdź na dół i ustaw wersję iPada na dowolny storyboard, w tym skopiowaną i zmienioną nazwę, jeśli chcesz.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-02-26 12:32:39
Tak jak szybka notka dla tych, którzy mogli mieć z tym problem:
Mój problem:
Zawartość storyboardu skopiowana ładnie do nowego pliku tablicy, który dodałem. Jednak nie wprowadziłoby to zmian w moim aprowizowanym iPadzie. Zauważając, że musiałem przełączyć wyznaczony storyboard dla celu kompilacji (patrz obraz), niech zmiany się pokażą.
Wrzuciłbym obrazek gdybym miał punkty, ale ustawienie znajduje się w:
Nawigator projektu po lewej stronie źródła menu, główny cel projektu (panel środkowy) karta Ogólne, (druga podgłówka) informacje o wdrożeniu, z zaznaczoną kartą przycisku iPada.
Stamtąd wybierz storyboard w obszarze " główny interfejs."
Dzięki za post, mam nadzieję, że ta wzmianka pomoże gdzieś.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-21 17:27:43
Dla zabawy, na XCode 5.1 i iOS 7.1 musiałem również zmienić wartości "toolVersion" i "systemVersion"na to:
toolsVersion="5023" systemVersion="13A603"
Bez tego nowy plik storyboard nie skompilowałby się
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-12 16:53:16
Używając klas rozmiarów XCode6 nie musisz już konwertować storyboardu na iPada. Ten sam Storyboard może być używany zarówno dla iPhone ' a, jak i iPada, oszczędzając Ci czasu na aktualizowaniu dwóch plików.
Powstały storyboard jest kompatybilny z iOS7+.
Czytaj więcej na ten temat tutaj: https://developer.apple.com/library/ios/recipes/xcode_help-IB_adaptive_sizes/chapters/AboutAdaptiveSizeDesign.html#//apple_ref/doc/uid/TP40014436-CH6-SW1
Użyj rozmiaru klasy umożliwiające pracę storyboardu lub pliku xib ze wszystkimi dostępnymi rozmiarami ekranu. Umożliwia to działanie interfejsu użytkownika aplikacji na dowolnym urządzeniu z systemem iOS.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-09 13:52:04
Ta funkcjonalność jest teraz wbudowana. Na przykład, jeśli zmienisz ustawienia projektu w Info o wdrożeniu - > Urządzenia z iPhone ' a na uniwersalne, pojawi się następujące okno dialogowe:
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-16 00:28:00
Śledziłem ten wątek, kiedy wczoraj dostałem ten sam problem. The steps I followed
- W przypadku Xcode 5.1 musiałem wyczyścić scenografię iPhone ' a, taką jak brakujące identyfikatory wielokrotnego wykorzystania komórek tabeli, podać identyfikator tablicy historii dla każdego kontrolera, usunąć nieużywane sceny.
- Copy MainStoryboard_iPhone.storyboard do MainStoryboard_iPad.storyboard.
- używanie edytora vi-zmieniono
targetRuntime="iOS.CocoaTouch"
natargetRuntime="iOS.CocoaTouch.iPad"
- Zmień kod w MainStoryboard_iPad.storyboard from:
<simulatedScreenMetrics key="destination" type="retina4"/>
to<simulatedScreenMetrics key="destination"/>
- Otwórz projekt w Xcode.
- zmieniono urządzenia wdrożeniowe na uniwersalne-wybrano opcję Nie kopiowania storyboardu iPhone ' a.
- Xcode będzie domyślnym celem wdrożenia 7.1, zajął się przestarzałymi funkcjami.
- aby naprawić błąd błędnie umieszczonego widoku w Ipad Storyboard-zmieniono układ ramki dla kontrolerów podając błędy.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-12 10:19:47
Dla Xcode10
Just duplicate
Main.storyboard
Następnie zmień nazwy plików na
Main_iPad.storyboard
iMain_iPone.storyboard
Ustaw odpowiednie nazwy w
.plist
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-22 10:06:21
Najprostszym i najbardziej niezawodnym sposobem, aby to zrobić, jest skopiowanie Wklej z iPada storyboard.
- Utwórz nowy storyboard i nadaj mu nazwę MainStoryboard_ipad.
- uczyń swoją aplikację uniwersalną, ustawiając właściwość Devices na uniwersalną na stronie podsumowania właściwości docelowych dla Twojego projektu.
- Otwórz storyboard iPhone ' a i wybierz wszystko i skopiuj
- Otwórz iPad storyboard i wklej.
You ' ll have to go about zmiana rozmiaru, ale może być szybsza niż odtworzenie całego storyboardu.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-10 19:16:12
Istnieje naprawdę proste rozwiązanie dla wersji Xcode, które obsługują klasy wielkości (testowane w Xcode 7, który jest aktualną wersją w momencie pisania). Zaznacz pole wyboru "Użyj klas rozmiaru" na pliku storyboard (Inspektor Plików), potwierdź wyświetlone okno dialogowe. następnie odznacz to samo pole wyboru-Xcode zapyta cię, czy chcesz używać tego storyboardu z iPhonem lub ipadem i odpowiednio przekonwertować ekrany w nim. nie ma potrzeby bezpośredniego edytowania plik storyboard . Zarówno dla iPada, jak i iPhone 'a, po prostu skopiuj ten sam storyboard i skonfiguruj jeden dla iPada, a drugi dla iPhone' a za pomocą opisanej metody.
I zanim ktoś zaproponuje użycie klas wielkości - chociaż są świetne, są mniej wygodne dla mocno dostosowanych interfejsów, takich jak gry itp]}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-21 02:47:05
Inne Podejście
-
Dodaj pusty-Widok-Kontroler Z Nawigacją-Kontroler w Ipad-Storyboard
-
Zmień klasę na klasę swojego pierwszego Viewcontrollera używanego dla iPhone ' a, "fooViewController"
-
Dodaj Storyboard-Identifier w Storyboardzie iPhone ' a "fooViewController_storyboard_identifier" dla pierwszego ViewController
-
Przejdź do "fooViewController.m "
Dodaj zmienną bool bool
nibWasLoadForIpad=false
-
Przejdź do
viewDidLoad
- Metoda
if ( UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad && !nibWasLoadForIpad) { nibWasLoadForIpad=true; UIStoryboard* Storyboard_iphone=[UIStoryboard storyboardWithName:@"Main_iPhone" bundle: nil]; fooViewController *controller = [Storyboard_iphone instantiateViewControllerWithIdentifier:@"fooViewController_storyboard_identifier"]; [self.navigationController pushViewController:controller animated:YES]; self.modalPresentationStyle = UIModalPresentationCurrentContext; }
(ps. Wiem, że problem polega na tym, że widok-tła będzie ustawiony na biały)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-12 10:14:53
Powinieneś utworzyć Raport o błędzie za pomocą Apple. można powiedzieć, że to duplikat mojego (10167030), który jest otwarty od września 2011. Frustrujące rzeczy z mojego punktu widzenia jest to, że funkcja istniała w Xcode 3...
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-07-04 15:05:38
Dzięki za odpowiedzi.
Wykonałem powyższe kroki, ale kiedy uruchomiłem aplikację pod symulatorem lub moim iPadem, nadal używałem tylko scenopisu iPhone ' a.
Z jakiegoś powodu, kiedy zmieniłem urządzenie docelowe, aby było uniwersalne zamiast iPhone ' a, Xcode (v5. 0) nie aktualizował informacji o aplikacji.plik plist, aby dołączyć iPad storyboard, więc musiałem ręcznie dodać następujący wpis (za pomocą edytora plist w Xcode):
Main storyboard file base name (iPad) = = > MainStoryboard_iPad
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-31 18:52:51
Po prostu zmieniam (dodatkowo odpowiedź od @tharkay):
<device id="ipad9_7" orientation="landscape">
I działa świetnie !
Używam tego w XCode 8.3.3
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-11 16:28:21