2013-03-13 11 views
27

IB, stop adding that padding!Jak zapobiec dodawaniu wypełnienia 20 punktów do zawartości subskrybowanej przez Interface Builder?

Widzisz, że 20px (raczej pt) padding? IB robi to automatycznie w dwóch przypadkach, gdy uderzysz w Cmd + =, aby autosize superview, by dopasować zawartość podskali, i gdy wybierzesz Editor > Embed In > UIView, UIScrollView etc..

Późniejsze rozwiązanie jest szczególnie denerwujące, ponieważ pozwala zaoszczędzić jeden krok i przekształca je w kłopoty z repozycjonowaniem, które są tylko nieznacznie lepsze niż robienie tego ręcznie i utrata względnego pozycjonowania WSZYSTKICH podobieństw po przeciągnięciu ich na siebie. inne miejsce w hierarchii.

także z opcją Embed In, IB przesuwa pozycjonowanie nowej Superview owijki (-20, -20), a jeśli to sprawia, że ​​lepiej ...

Am I brakuje czegoś tutaj? Czy istnieje sposób, aby zapobiec temu dopełnieniu?

Odpowiedz

35

I w końcu zorientowali się, jak to zrobić, podobne do tej odpowiedzi:

Group views in Interface Builder

  1. Zaznacz wszystkie widoki, które chcesz zamieścić (przez przesunięcie lub polecenia klikając je).
  2. Edytor-> Osadź W-> Wyświetl. Spowoduje to utworzenie widoku "A" z niepotrzebnym dopełnieniem 20 pikseli.
  3. Utwórz nowy widok "B" z rzeczywistymi ograniczeniami, których potrzebujesz (czyli o 20 pikseli mniejszymi niż "A" ze wszystkich stron).
  4. Przeciągnij stary widok kontenera "A" do nowego widoku kontenera "B" (Xcode wyśrodkuje go w "B", zachowując bieżące położenia wszystkich elementów podrzędnych).
  5. Kliknij na stary widok kontenera "A" i przejdź do Edytora-> Unembed.

Teraz twoje elementy podrzędne są prawidłowo umieszczone w widoku "B", a podkładka nie ma 20 pikseli.

Testowany w Xcode 4.5.

P.S. Ta technika może być szczególnie przydatna, gdy chcesz mieć pasek boczny i obsługę zarówno ekranów 3,5 "i 4". Możesz nadać widokowi paska bocznego i głównego odpowiedni autosizing, a następnie skalować subviews w stosunku do nich. Miałem kłopot widoki GLKit szanować autosizing zasady, więc założyłem zwykłe widoki i osadzony poglądy GLKKit w nich ze wszystkich czerwonych pasków autosizing włączona:

GLKView nested subview frame size and bounds size incorrect

+6

Fajna technika. Dzięki. Ale zasadniczo prawidłową odpowiedzią jest "Nie możesz"? –

+1

Praca w Xcode 5.1. To powinna być poprawna odpowiedź, ponieważ zapewnia rozwiązanie problemu, nawet jeśli nie jest tak bezpośrednia, jak pożądana. – kraftydevil

+0

Fantastyczne :) Podoba mi się to. – Vignesh

0

Wszystko co musisz zrobić, co najmniej w Xcode 7.2 jest dać pojemnika przeglądać następujące ograniczenia

Trailing Space to Superview = -20 

Leading Space to Superview = -20 
0

to co pracował dla mnie na Xcode 9. Należy zauważyć, że w ten sposób tracisz ograniczeń widoku z góry, że jesteś osadzania. Aby osadzić jeden widok w drugim:

  1. Utwórz kolejny pusty widok na tym samym poziomie, co widok, który chcesz osadzić.
  2. Poprawnie ułóż nowy widok i dodaj do niego ograniczenia do podglądu .Myślę, że w większości przypadków chcesz powielić te same więzy , jakie masz z istniejącego widoku do superview.
  3. Następnie wybierz widok, który musi być osadzone i przeciągnij go pod nowego widoku. Teraz masz widok osadzony w nowym widoku. Należy również dodać ograniczenia krawędzi z osadzonego widoku do nowego widoku.

To wszystko.

Powiązane problemy