To, co chciałbym zrobić, to przeciągnąć komponent / widok z jednego nadzoru do drugiego w konstruktorze interfejsu Xcode bez resetowania jego klatki / pozycji.
Wydaje się, że domyślnym zachowaniem Xcode podczas wykonywania tej czynności jest wyśrodkowanie widoku przesuwanego w pionie i poziomie w nowym widoku nadzoru, przy jednoczesnym zachowaniu jego wymiarów. Jest to niezwykle frustrujące, ponieważ oznacza, że w nowym widoku należy ręcznie zmienić położenie widoku. Ale ustawiłem go poprawnie, zanim go przesunąłem, więc chciałbym, aby Xcode po prostu zapamiętał wszystkie atrybuty swojej ramki, a nie tylko jej szerokość / wysokość. czy to możliwe?
ios
xcode
interface-builder
aroth
źródło
źródło
Odpowiedzi:
Inne rozwiązanie:
źródło
Znalazłem coś, co może wam pomóc!
Zadanie polega na przegrupowaniu „widoków podrzędnych” w „widok nadrzędny”, tak aby stały się one elementami podrzędnymi widoku nadrzędnego w hierarchii i zachowały fizyczne pozycje na ekranie, tak jak przed wykonaniem czynności.
Najpierw dostosuj widok rodzica, aby fizycznie obejmował obszar widoków potomnych. Po drugie, upewnij się, że wszystkie dzieci znajdują się poniżej tego na liście widoków.
Teraz zaznacz wszystkie dzieci za pomocą myszy i przesuń je np. O jeden piksel w górę i jeden piksel w dół (żeby powiedzieć, że IB jest jakaś zmiana). Po tym uwolnieniu dzieci w magiczny sposób staną się dziećmi rodzica i zachowają swoje pozycje na widoku.
U mnie działa na OSX 10.8.2 i Xcode 4.6.
Powodzenia!
źródło
Udało mi się zaoszczędzić sporo czasu spędzonego na przestawianiu rzeczy i zrobiłem to:
Nie jest to jednak zbyt eleganckie, nie rozumiem, dlaczego XCode nie obsługuje go za pomocą Shift lub czegoś podobnego.
źródło
Wybierz wszystkie kontrolki, które chcesz przenieść z jednego UIView do innego UiView (nay be child) lub ScrollView
Wytnij Kopiuj
Teraz po przeciągnięciu nowego UIView / ScrollView do istniejącego UIView, nie klikaj raz, aby go zaznaczyć, zamiast tego kliknij DWUKROTNIE nowy UIView / ScrollView i wklej wszystkie kontrolki.
Różnica odległości pozostanie taka sama dla wszystkich kontrolek, ale może być konieczna ponowna zmiana ich położenia. Więc nie klikaj nigdzie, dopóki nie zmienisz ich położenia, po prostu zmień położenie wszystkich kontrolek za pomocą strzałek nawigacyjnych, ponieważ wszystkie są już zaznaczone, lub możesz je wybrać ponownie.
UWAGA: jestem na XCode 4.2
źródło
Zrobiłem coś podobnego do rozwiązania Stepana, bez użycia storyboardu. W IB, gdy widok ViewControllera jest otwarty:
źródło
To najlepsze rozwiązanie, aby skopiować podglądy do innego widoku i zachować pozycje:
Krok 6 spowoduje usunięcie widoku osadzania i skopiujesz tylko podglądy.
źródło
Xcode Interface Builder powoduje bałagan, gdy widok nadrzędny jest przeciągany i upuszczany do innego widoku (UIView, ScrollView, StackView)
P:
Osadzanie widoku (który zawiera wiele innych podglądów podrzędnych) w ScrollView lub w innym widoku najwyższego poziomu nie jest proste z tym, co widziałem do tej pory. To, co dzieje się wkrótce potem, może wydawać się, że wszystkie podglądy są niewłaściwe, ponieważ nie mogą znaleźć ich oryginalnej ramki.
Odp .:
Wykonaj następujące kroki, a będziesz w stanie rozwiązać problem łatwiej, jak to możliwe:
Nie, jeszcze nie skończone! Czasami może się zdarzyć, że jest jeszcze kilka problemów związanych z ograniczeniami interfejsu użytkownika, będziesz musiał je odpowiednio rozwiązać.
źródło
Wykryłem inne podejście. Zasadniczo jest to: Przesuń = Wytnij + Wklej
W ten sposób możesz:
W ten sposób nie:
Podstawą jest to, że każdy widok z wyjątkiem jednego (głównego) w Storyboard ma swój widok nadrzędny . Następnie, kiedy kopiujesz / przenosisz wiele podglądów podrzędnych, tracisz klatki i ograniczenia .
Odpowiedź jest dość prosta. Tworzysz kopię swoich podglądów podrzędnych (SV), kopiując ich widok nadrzędny (P) do nowego widoku nadrzędnego (P '). W ten sposób może być konieczne ponowne utworzenie tylko ograniczeń z tego nowego widoku nadrzędnego (P ') do jego nowego widoku nadrzędnego, ale nie dla każdego widoku podrzędnego, który chcesz przenieść.
Po skopiowaniu widoku rodzica (P) do nowego (P '), z tego nowego widoku (P'):
A z oryginalnego widoku rodzica (P):
Przed:
Po:
Powinienem podkreślić, że nie uogólnia to dobrze, jeśli masz np. UIScrollView jako widok nadrzędny. Wtedy jego kopia byłaby ponownie UIScrollView, co może nie być pożądane.
Inną rzeczą jest to, że kiedy usuwasz niektóre z podglądów podrzędnych (SV) w oryginalnym widoku nadrzędnym (P), może być konieczne ponowne utworzenie niektórych ograniczeń, jeśli inne (nieruchome podglądy) odnoszą się do nich. Ale i tak powinieneś to zrobić.
źródło
W rozwiązaniu tego problemu pomogło mi-
źródło