2015-09-23 7 views
16

Może dążenie do projektu "bez ostrzeżenia" jest daremne, ale jestem wystarczająco zdenerwowany Adaptive Layout/AutoLayout, że jestem zmuszony spróbować zgnieść te ostrzeżenia.Ramka "będzie inna w czasie wykonywania" ... Czy to nie wszystko?

Mam widok, który chcę dynamicznie zmieniać na podstawie szerokości ekranu portretu. Mam zestaw aplikacji w informacjach o kompilacji dla Universal, tylko dla portretu (i do góry nogami). Mam ograniczone UIView z następujących sposobów:

  1. wyrównany Centrum widoku do centrum Superview za X
  2. dokonał widok na szerokość proporcjonalna do Superview na szerokość
  3. dała wyświetlić ograniczenie współczynnika proporcji 1: 1
  4. Biorąc widoku pionowego ograniczenie do superview Top

Po szczegóły patrz zrzut ekranu poniżej.

Teraz otrzymuję ostrzeżenia o tym, że "ramka jest inna w czasie wykonywania", w szczególności rozmiar i położenie w czasie wykonywania w porównaniu do tego, co znajduje się w obszarze roboczym. Nie wiem, dlaczego Xcode "troszczy się" o płótno, w którym rozmiary klas są ustawione na Dowolna wysokość i Dowolna szerokość. Sądziłem, że cały aspekt układu Adaptive polega na tym, że rozmiary i pozycje są rozwiązywane w środowisku wykonawczym na podstawie rozmiaru i orientacji ekranu urządzenia.

Jeśli się załamuję i pozwolę Xcode "Aktualizować ramki" ... tak ostrzeżenie zniknie, ale przy super dużych widokach praktycznie niemożliwe jest graficzne przetwarzanie na maleńkim płótnie w stylu WYSIWIG. Jakieś rozwiązanie tutaj, aby pozbyć się ostrzeżeń bez tworzenia zbyt dużych widoków, które sprawiają, że praca wewnątrz płótna jest prawie niemożliwa?

Canvas screenshot

Odpowiedz

7

Można zmienić rozmiar metryki symulowane na przykład do 4-calowych iPhone!

enter image description here

Albo Freeform a następnie zmienić rozmiar do tego, co najbardziej Ci odpowiada.

enter image description here

19

Aby pozbyć się ostrzeżenia, i niech ograniczeń umieszczać widoki „poprawnie”, po prostu wybierz widok, który daje ostrzeżenie, naciśnij mały trójkąt rzeczą w prawym dolnym rogu storyboard : enter image description here

a następnie wybrać „Update” klatek dla „wszystkich widoków w pojemnik”

(Szkoda, że ​​nie był jakiś sposób to zrobić, aby cały storyboard przynajmniej ja nie znalazłem).

+1

Przepraszam, może nie było jasne. W moim pytaniu już zauważyłem, że mogę pozwolić Xcode naprawić rzeczy z "Update Frames". Moje pytanie dotyczyło w zasadzie wykorzystania ograniczonej nieruchomości Canvas po tym, jak "zaktualizowano ramki". Zdaję sobie sprawę, że było trochę jęków i jęków poprzedzających moje pytanie :) –

13

Wybierz widok i naciśnij

  • opcja + komenda + =

To będzie aktualizować rozmiar ramki. Powtórz dla wszystkich obraźliwych widoków.To nie trwa tak długo, szczególnie jeśli znajdziesz je, klikając komunikaty o błędach.

Dzięki this answer za pomysł.


Uwagi

Po aktualizacji do Xcode 8 i wybierając jakiś Wyświetl jako urządzenia, ja otrzymuję ten błąd. Menu jest inne niż w Xcode 7, więc odpowiedź @ Spoek nie działała. Kliknięcie przycisku Aktualizuj lub Resetuj również nie działa.

enter image description here

Aktualizacja

Aktualizacja Ramki ma teraz swój własny przycisk. Dlatego wcześniej tęskniłem za tym.

enter image description here

+0

@RaphaelP. Aktualizacja ramek sprawia, że ​​wygląda ona tak, jakby wyglądała na uruchomionym urządzeniu. Aktualizowanie ramek powinno być zawsze bezpieczne. (To znaczy, że nie zmienia twoich ograniczeń.) Jedyny raz, kiedy miałem z tym problem, to gdy nie miałem ustawionych moich ograniczeń, a aktualizacja ramek sprawiła, że ​​trudno było znaleźć widoki. – Suragch