2012-10-22 3 views
6

Tak, nie mogę sobie poradzić z ograniczeniami w budowaniu interfejsu.Praca z ograniczeniami w konstruktorze interfejsów

Nie mogę ich dodać samemu - konstruktor interfejsów wydaje się myśleć, że wie najlepiej.

Ja również nie mogę ich zabrać (mogę przekonwertować na ograniczenie "użytkownika", a następnie usunąć, ale program budujący interfejs po prostu zastąpi go ponownie tym samym ograniczeniem).

Sądziłem, że ograniczenia miały pomóc Ci w zmianie układu i wszystkich rodzajów - tj. Tworzeniu widoków dla iPhone'a 5 i wcześniejszych. Przechodzenie z trybu portretu do trybu poziomego.

Nie mogę sprawić, żeby działało. Jeśli dodaję widok i umieszczę go poniżej górnej części podglądu, ustawi on ograniczenie na Top space to:. Będzie to wartość pikseli, co oznacza, że ​​gdy wyświetlam na krótszym iPhonie 4 (lub gdy telefon zmienia krajobraz), elementy te nie będą automatycznie przesuwane w górę.

Na przykład próbuję utworzyć niestandardowy widok klawiatury - jeden podobny do tego, który można zobaczyć na kasie. Stworzyłem niestandardową podklasę UIView, a teraz umieściłem UIView w konstruktorze interfejsów. Ustawiłem wysokość i szerokość i umieściłem je w dolnej części widoku (tam, gdzie "kliknęło" na miejscu). W jaki sposób program budujący interfejs dodał ograniczenie Top space to umieszczając go na tej wysokości (iphone 5). Więc jeśli zobaczę to na iPhonie 4, nie rozwinie się (jak się spodziewałem, kiedy "wskoczyłem" na miejsce na dole ekranu), ale zamiast tego odcięło dno.

Nie tego chciałem, ale (jak wyżej) niestety nie mogę usunąć tego ograniczenia.

Co mogę zrobić? Jestem świadomy, że mogę po prostu utworzyć dwa pliki nib (dla iPhone'a 5 i dla innych iPhone'ów), ale co z tym, kiedy chcę, żeby rzeczy zmieniały się automatycznie, kiedy włączam telefon?

Dzięki za pomoc

Odpowiedz

7

Nie można usunąć ograniczenie interfejs Builder jeśli robi tak odejdzie niewystarczające do ustalenia ograniczeń całkowicie wielkość i położenie każdej widget interfejsu.

  • Jedno rozwiązanie: dodać więcej ograniczeń, aż wielkość i położenie są nadokreślony. Będziesz wtedy mógł usunąć jedno z zbędnych ograniczeń. Na przykład, dał ten przykład:

    mam ustawić wysokość i szerokość i umieszczone je w dolnej części widoku (gdzie „kliknął” na swoim miejscu). W jaki sposób program budujący interfejs dodał górną przestrzeń do ograniczenia, umieszczając ją na tej wysokości (iphone 5). Więc jeśli oglądam go na iPhonie 4, to nie rozwinie się (jak można by się spodziewać, ponieważ I "wskoczył" na miejsce na dole ekranu), ale zamiast tego obcina od dołu.

    Wybierz widok i wybierz Edytor> Pin> Bottom Space to Superview. Teraz masz więcej ograniczeń niż potrzebujesz: wysokość, szerokość, coś określającego pozycję poziomą (o której zapomniałeś wspomnieć), pinezkę na górze superwizji i pinezkę na spodzie superview. W ten sposób możesz teraz usunąć pinezę do góry.

  • Inne rozwiązanie: usuwa niepożądane więzy w kodzie. Ograniczenie jest zwykłym obiektem interfejsu, więc możesz go wyposażyć i usunąć podczas działania kodu. Jeśli jednak zrobisz to w taki sposób, aby pozostawić niedokładne wymiary lub położenie, otrzymasz nieprzewidywalne wyniki ("niejednoznaczny układ"), więc bądź ostrożny.

  • Jeszcze inne rozwiązanie: zmniejsza priorytet niechcianych ograniczeń w IB. Program Interface Builder zapewnia, że ​​wszystkie wartości są bezwzględnie określone. Ale może wiesz, na przykład, że superview zmieni rozmiar, a więc niektóre z ograniczeń stworzonych przez Interface Builder będą niepożądane. Nie możesz ich usunąć, ale możesz zmniejszyć ich priorytet. Tak więc, w twoim przykładzie, możesz skończyć szpilką do góry i szpilką do dołu, ale możesz wtedy po prostu zmniejszyć priorytet szpilki do góry.

0

Dla mnie oczywiste było to, że można wyłączyć tę nową funkcję na podstawie pliku na nib, jeśli jest to więcej kłopotu niż wartość.

Wybierz plik końcówki i wybierz Inspektora plików (Widok-> Narzędzia-> Pokaż inspektora plików) i usuń zaznaczenie opcji "Użyj autouzupełniania".

+0

Pytanie dotyczy ** pracy z ** ograniczeniami. Myślę, że Thomas ** nie ** naprawdę chce go wyłączyć. –

+0

Bardzo mi to pomogło i myślę, że autor biletu również byłby pomocny. Możesz powiedzieć tonem, w jaki pisze on, że wcale nie jest zadowolony z ograniczeń i wolałby po prostu obejść się bez nich, niż próbować zhakować je do uległości. – marfastic

0

Jeśli masz z tym problemy na ekranach o różnych rozmiarach, na których na ekranie iPhone'a 5 dobrze się komponuje, ale nie na ekranie iPhone 4 lub na wizie, rozwiązaniem może być wyłączenie opcji "Autoresize Subviews" w przypadku obraźliwych widoków. a następnie kliknij przycisk w prawym dolnym rogu okna, który pokazuje twój storyboard/nib, który zmienia rozmiar ekranu i upewnij się, że wszystko wygląda dobrze dla obu rozmiarów ekranu. Kolejna jedna z tych rzeczy, która sprawia, że ​​jestem szczęśliwy, kiedy buduję wszystko w kodzie i unikam takich dziwactw.