Mam iPhone
aplikację, która ma scenorys. Teraz chcę również dostarczyć iPad
aplikację. Zapytałem więc, czy istnieje funkcja, która pomaga mi przekonwertować iPhone
scenorys na iPad
scenorys.
Aby być konkretnym:
Czy istnieje podobna funkcja, czy jest to tylko sposób ręczny?
Odpowiedzi:
Znalazłem rodzaj rozwiązania:
Zduplikuj scenorys iPhone'a 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 z:
<simulatedScreenMetrics key="destination" type="retina4"/>
do<simulatedScreenMetrics key="destination"/>
Teraz zapisz wszystko i ponownie otwórz Xcode. IPad-Storyboard ma tę samą zawartość, co plik iPhone'a, ale wszystko może być nieuporządkowane.
Zaoszczędziło mi to wiele godzin - mam nadzieję, że ci to pomoże
źródło
start a bounty
pod pytaniem, wybierz żądaną kwotę iReward existing answer
...<simulatedScreenMetrics key="destination" type="retina4"/>
na<simulatedScreenMetrics key="destination"/>
Jeśli utworzyłeś projekt uniwersalny, domyślnie zostałaby utworzona pusta tablica na iPada, wystarczy wybrać tablicę iPhone'a, zaznaczyć wszystko (Command + A), skopiować (Command + C) i wkleić na tablicę iPad. Przed kompilacją należy przenieść punkt wejścia z pustej scenorysu do nowo skopiowanej scenorysu.
źródło
To nie do końca działało. Zrobiłem coś trochę innego.
<scenes> <!--Contents View Controller-->
</class> </classes>
To działało dla mnie. Dostałem nowy układ z podłączonymi wszystkimi moimi gniazdkami, co samo zaoszczędziło mi kilka godzin.
źródło
.storyboard
pliki i kliknij,Open As > Source Code
aby wyświetlić surowy plik XML.Po przeczytaniu wielu wątków na temat przepełnienia stosu odkryłem, że rozwiązaniem jest-
1. Zduplikuj tablicę iPhone'a i zmień jej nazwę MainStoryboard_iPad.storyboard
2. kliknij prawym przyciskiem myszy w serii ujęć -> „otwórz jako” -> „Kod źródłowy”.
3. Wyszukaj celRuntime = „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 „otwórz jako” -> „IOS StoryBoard” 5. być może będziesz musiał zmienić swoje ograniczenia. To wszystko, co zrobiłeś.
źródło
źródło
1 - Utwórz swój
"MainStoryboard_iPad.storyboard";
2 - Kliknij prawym przyciskiem myszy i wybierz
"MainStoryboard_iPhone.storyboard"
„Otwórz jako -> Kod źródłowy”. Skopiuj wszystko;3- Kliknij prawym przyciskiem myszy i wybierz
"MainStoryboard_iPad.storyboard"
„Otwórz jako -> Kod źródłowy”. Wklej wszystko. Teraz Wyszukaj 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 ponownie otwórz, ale za pomocą konstruktora interfejsów. Będziesz musiał tylko zmienić układ.
Tej metody można także użyć w przypadku plików .xib
źródło
Idzie w drugą stronę, ale udało mi się zrobić zaznaczenie wszystkich i skopiuj z mojej serii ujęć na iPadzie (~ 35 scen) i wkleić ją do mojej serii ujęć na iPhonie. Rozmiary scen zostały automatycznie dostosowane. Widziałem tylko dwa problemy, musiałem wymienić UISplitViewController (ponieważ jest to tylko iPad), a domyślne tło stało się przezroczyste zamiast szarego (wciąż pracuje nad poprawieniem tego poprawnie, bez ręcznego ustawiania tła dla wszystkiego).
EDYCJA: Wygląda na to, że domyślne tło dla UITableView w Inspektorze atrybutów jest dość dziwne. Musiałem ręcznie ustawić tło na „Kolor tła widoku tabeli grupowej” dla zgrupowanych widoków tabeli i „Biały kolor” dla niezgrupowanych widoków tabeli. Następnie był wyświetlany jako „Domyślny” (zakładam, że odtąd dopasował ustaloną wartość). - W rzeczywistości, jeszcze łatwiejsze, zmiana z „Zgrupowane” na „Statyczne” iz powrotem wydaje się resetować domyślny kolor.
źródło
Oto coś, co pozwoliło mi zaoszczędzić wiele godzin i może pomóc osobom z umiejętnościami w Pythonie.
Tworzę aplikację przez ostatnie dwa miesiące, koncentrując się na iPadzie iterującym UX z zespołem.
Dzisiaj skupiłem się na zbudowaniu wersji iPhone'a, wykonując powyższe kroki (dzięki!), Ale nie chciałem wtedy zmieniać rozmiaru wszystkich elementów interfejsu użytkownika z wymiarów iPada w edytorze wizualnej scenorysu.
Napisałem więc ten mały skrypt jig Pythona, aby skanować plik scenorysu w poszukiwaniu x, y, szerokości, wysokości i przeskalować wszystko o współczynnik 320/768. Pozwoliło mi to skupić się na drobnych korektach.
Skopiuj scenorys iPada do nowego pliku. (np. iPhoneStoryboard.storyboard)
Uruchom skrypt poniżej z skopiowaną nazwą pliku scenariusza jako pierwszym parametrem.
Wygeneruje plik wyjściowy z przyrostkiem _adjusted.storyboard (np. IPhoneStoryboard.storyboard_adjusted.storyboard)
Mam nadzieję, że to pomoże...
źródło
Przejdź do Podsumowania celu i zmień urządzenia na uniwersalne, a następnie zejdź na dół i ustaw wersję iPada na dowolną scenorysę, którą lubisz, w tym skopiowaną i jeśli chcesz.
źródło
Tak jak krótka uwaga dla tych, którzy mogli mieć mój problem z tym:
Mój problem:
Treść scenorysu została skopiowana ładnie do nowego pliku tablicy, który dodałem. Nie wprowadziłoby to jednak zmian w moim wyposażonym iPadzie. Zauważając, że musiałem przełączyć wyznaczoną scenorys dla celu kompilacji (patrz zdjęcie), niech zmiany się pokażą.
Gdybym miał punkty, opublikowałbym zdjęcie, ale ustawienie znajduje się w:
Nawigator projektu w menu źródła po lewej stronie, cel główny karty ogólnej projektu (środkowy panel), informacje o wdrażaniu (druga podpunkt), z wybraną kartą przycisku iPada.
Stamtąd wybierz scenorys w „głównym interfejsie”.
Dzięki za post, mam nadzieję, że ta wzmianka pomoże gdzieś się zaczepić.
źródło
Dla zabawy, w XCode 5.1 i iOS 7.1 musiałem również zmienić wartości „toolVersion” i „systemVersion” na:
Bez tego nowy plik scenorysu nie zostałby skompilowany
źródło
Używając klas rozmiaru XCode6, nie musisz już konwertować scenorysu na iPada. Z tej samej Storyboard można korzystać zarówno na iPhonie, jak i na iPadzie, dzięki czemu nie musisz aktualizować dwóch plików.
Powstały scenorys jest kompatybilny z iOS7 +.
Przeczytaj 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 klas rozmiarów, aby włączyć scenorys lub plik XIB do pracy ze wszystkimi dostępnymi rozmiarami ekranu. Dzięki temu interfejs użytkownika aplikacji może działać na dowolnym urządzeniu z systemem iOS.
źródło
Dla Xcode10
Po prostu duplikuj
Main.storyboard
Następnie zmień nazwy plików na
Main_iPad.storyboard
iMain_iPone.storyboard
Ustaw odpowiednie nazwy w
.plist
4. Wystarczy wybrać odpowiedni .storyboard do skonfigurowania
źródło
Ta funkcja jest teraz wbudowana. Na przykład, jeśli zmienisz ustawienia projektu w Informacje o wdrożeniu -> Urządzenia z iPhone'a na Universal, pojawi się następujące okno dialogowe:
źródło
Śledziłem ten wątek, gdy wczoraj trafił mnie ten sam problem. Kroki, które podążyłem
targetRuntime="iOS.CocoaTouch"
natargetRuntime="iOS.CocoaTouch.iPad"
<simulatedScreenMetrics key="destination" type="retina4"/>
na<simulatedScreenMetrics key="destination"/>
To było to .. Dziękuję wszystkim za pomoc ..
źródło
Najłatwiejszym i najbardziej niezawodnym sposobem na to jest skopiowanie wklejania z serii ujęć iPada.
Musisz zmienić rozmiar, ale może to być szybsze niż odtworzenie całej scenorysu.
źródło
Istnieje naprawdę proste rozwiązanie dla wersji Xcode, które obsługują klasy wielkości (Testowane w Xcode 7, która jest aktualną wersją w momencie pisania). Zaznacz pole wyboru „użyj klas wielkości” w pliku scenorysu ( Inspektor plików ), potwierdź to okno dialogowe. Następnie usuń zaznaczenie tego samego pola wyboru - Xcode zapyta, czy chcesz używać tej scenorysu z iPhonem lub iPadem i odpowiednio przekonwertować w niej ekrany. Nie ma potrzeby bezpośredniej edycji pliku scenorysu . Zarówno dla iPada, jak i iPhone'a, po prostu skopiuj tę samą scenorys i skonfiguruj jedną dla iPada i drugą dla iPhone'a, używając opisanej metody.
I zanim ktoś zasugeruje użycie klas wielkości - chociaż są one świetne, są mniej wygodne w przypadku wysoce dostosowanego interfejsu użytkownika, takiego jak gry itp
źródło
Inne podejście
Dodaj pusty kontroler widoku z kontrolerem nawigacji w Storyboard na iPadzie
Zmień klasę na klasę pierwszego ViewController używanego na iPhonie, „fooViewController”
Dodaj identyfikator scenorysu do scenorysu iPhone'a „fooViewController_storyboard_identifier” dla pierwszego ViewController
Przejdź do „fooViewController.m”
Dodaj bool Zmienna bool
nibWasLoadForIpad=false
Idź do
viewDidLoad
-Method(ps. Wiem, że problemem jest to, że tła widoku zostaną ustawione na biały)
źródło
Powinieneś utworzyć raport o błędach w Apple. Można powiedzieć, że to mój duplikat (10167030), który jest otwarty od września 2011 roku. Z mojego punktu widzenia frustrujące jest to, że ta funkcja istniała w Xcode 3 ...
źródło
Dziękuję wszystkim za odpowiedzi.
Postępowałem zgodnie z powyższymi krokami, ale kiedy uruchomiłem aplikację pod symulatorem lub iPadem, nadal korzystałem z serii ujęć iPhone'a.
Z jakiegoś powodu, kiedy zmieniłem urządzenie docelowe na Uniwersalne zamiast iPhone'a, Xcode (v5.0) nie zaktualizował pliku app-Info.plist, aby uwzględnić scenorys iPada, więc musiałem ręcznie dodać następujący wpis ( za pomocą edytora plist w Xcode):
Podstawowa nazwa pliku głównego scenorysu (iPad) ==> MainStoryboard_iPad
źródło
Po prostu zmieniam (oprócz odpowiedzi z @tharkay):
i działa świetnie!
Używam tego w XCode 8.3.3
źródło