2014-09-08 7 views
13

Próbowałem utworzyć niestandardowy widok freefrom z budującym interfejs. Mam UIView, który zawiera UIImageView i UILabel. Ustawiam ograniczenia, aby dopasować Etykietę zgodnie z Obrazem itp. I marginesem do podglądu.Implicit Constraint iPhone Portrait Screen Height

Teraz chcę, aby superview dokładnie pasował do subviews. Ale kiedy naciśniesz Edytor -> Rozmiar, aby dopasować zawartość, podgląd nie zostanie całkowicie zmieniony, a ograniczenia będą w konflikcie. Pojawia się niejawne ograniczenie ("Wysokość ekranu w pionie iPhone'a"), którego nie można zmienić/usunąć. Patrz obrazek poniżej:

enter image description here

+1

Mam również dzisiaj do czynienia z tym problemem. Wydaje mi się, że widok główny zawsze traktowany jest tak, jakby miał rozmiar całego ekranu, mimo że ustawiłem go jako swobodną. Rozważam zgłoszenie błędu firmie Apple. –

+1

Czy znalazłeś rozwiązanie tego problemu? Mam dziś ten sam problem. – Kremk

+1

Każda aktualizacja w tej sprawie? Nadal wydaje się być problemem. – Tylerc230

Odpowiedz

0

Wystarczy zrobić to proste zapomnieć etykietę na razie. Dodałeś już ograniczenie szerokości i wysokości widoku obrazu, zamiast teraz używać treści sizetofit, spróbuj dodać ograniczenia wiodące, końcowe, górne i dolne między widokiem obrazu a jego widokiem nadrzędnym. Dzięki temu widok nadrzędny powinien pasować do widoku obrazu.

Ta sama technika (ograniczenia dla widoku nadrzędnego) może być wykorzystana do pracy z widokiem obrazu i etykietą.

+0

Mam już te ograniczenia i to nie działa. Ustawiłem wiodący, końcowy, ... priorytet na 1000, co oznacza, że ​​są obowiązkowe. Następnie pojawiają się te dziwne, niejawne ograniczenia (Wysokość ekranu w pionie iPhone'a). Wygląda na to, że budowniczy interfejs chce zachować proporcje w trybie portretu. Ale ten widok będzie używany jako MKAnnotationView, więc nie ma potrzeby utrzymywania tego wskaźnika. – kaeLum

+0

i dzieje się to tylko wtedy, gdy superview to rootview końcówki! – kaeLum

+0

to dla mnie poważny problem! – kaeLum

1

Chociaż nie jest to idealne rozwiązanie, w zależności od tego, jak zbudowany jest XIB i w jaki sposób odwołujesz się do widoku, możesz utworzyć widok "scratch pad" i umieścić w nim swój niestandardowy widok, aby zobaczyć, jak wszystko układa się. To znaczy, jeśli ustawiasz widok na ujście zdefiniowane w Właściciele pliku XIB, możesz po prostu połączyć go z widokiem utworzonym w "Podkładce zdrapek".

Na przykład utworzyłem widok pojemnika z kwadratem i przełącznikiem w środku. Ten najwyższy przykład narzeka na sprzeczne więzy i nie układa się poprawnie, podczas gdy dolny przykład pokazuje to samo, wyśrodkowane w widoku rzutowania. Znowu nie jest idealny, ale działa dla mnie.

enter image description here

Edit: Właśnie sobie sprawę, że pewne ograniczenia klasy wielkości mogą zostać utracone, gdy „notatnik” Widok jest odrzucany tak, że to kolejna zmarszczka do rozważenia. Wciąż się nad tym zastanawiam.

0

Zauważyłem, że kiedy fizycznie przeciągnąłem szerokość i wysokość superspora, aby spełnić ograniczenia, czerwone błędy ograniczenia zniknęły wraz z ograniczeniem "Przekroczona szerokość ekranu iPhone'a". Innymi słowy, moje ograniczenia dyktowały mi, że mój podgląd jest wyrównany do dołu z jego super widokiem. Jeśli przeciągnąłem dolną krawędź superspapu w górę, aby wyrównać kolory z podziałem, błędy zniknęły. Nadal wydaje się błędne i nieintuicyjne.

+0

W Xcode 6.3.1 nadal nie działa.Nie wydaje się to błędne i nieintuicyjne. Jest to błędne i nieintuicyjne. Teraz jedynym rozwiązaniem jest zmiana ograniczenia i wielkości kontenera. Cała moja produktywność jest tracona z tego rodzaju s .... Przykro mi to przyznać, ale XCode/IB/Swift wydaje się być tak niechlujną pracą i nie poprawiają mojej wydajności, jak Apple to sprzedają. –