2016-04-02 13 views
9

Od czasu aktualizacji do Xcode 7.3 mam problem z UIStackView. Jeśli utworzę pusty projekt i po prostu wstawię dwa UILabel s w UIStackView z domyślnymi priorytetami przytulania i kompresji, to pokaże mi błąd błędu przemieszczenia AutoLayout. Nawet nie działa z jednym (!) UILabel w UIStackView, więc priorytety nie ma znaczenia (jak myślę, może jest problem).UIStackView z UILabelsem w Xcode 7.3

Jak pamiętam w Xcode przed 7.3 wszystko było w porządku. Sprawdziłem oddzielnie dwa MacBooka Pro, to ten sam problem.

Czy ktoś wie, jak to naprawić?

enter image description here enter image description here

+2

Dlaczego ta opcja została odrzucona? Uważam, że jest to bardzo przydatne i konkretne. – nacho4d

Odpowiedz

9

enter image description here To jest błąd pojawia się w Xcode 7.3, więc możesz go zignorować, tak jak powiedział mat.

Problem

Storyboard nie może obliczyć wewnętrzną wielkość treści z subviews podczas korzystania UIStackView

Rozwiązanie

Jeśli cierpię widząc ostrzeżenia w serii ujęć można go fixe jak poniżej:

Powinieneś wykonać te czynności dla każdego wydziału swojego UIStackView

  • Tap ostrzeżenie swojego podrzędny
  • Tap "klatek Update" opcja
  • Wybierz "zastępczy" na podrzędny rzeczywistej wielkości w czwartym menu w widoku inspektor

jak że nie zobaczysz ostrzeżeń i możesz zobaczyć, czy istnieją jakiekolwiek niejasności

Wadą jest to, że powinieneś to zrobić za każdym razem, gdy zmieniasz swój podgląd (przykład le: zmiana rozmiaru tekstu na UILabel)

Mając nadzieję, że Apple naprawia ten błąd w następnej wersji

+0

Hej Hamza. Dziękuję za zrzuty ekranu! To działa jak urok! Fantastyczne znalezisko! –

+0

Hej @RalfHundewadt, serdecznie dziękuję i dziękuję za twoją opinię :) –

+0

Och, człowieku, bardzo ci za to dziękuję! –

4

Ignoruj ​​ostrzeżenia. Scenorys nigdy nie rozumiał widoków stosu. Ograniczenia będą poprawne w czasie wykonywania i tylko to się liczy.

+0

Tak, w środowisku wykonawczym to działa, ale działało również do 7.3 w Interface Builder. Czy Apple zna problem i czy planują go naprawić? :( – Eugene

+0

Robią to, jeśli złożyłeś raport o błędzie. Czy zrobiłeś to? Https://bugreport.apple.com – matt

+0

Tak, zrobiłem. Czekam, zobaczmy ... – Eugene

3

Mam inny trik dla wyeliminowania ostrzeżenia i podejmowania pracy „Zaktualizuj Frames” prawidłowo.

Zaleta:

nie wymaga wymiany wartości zastępcze każdy tekst czasu zmienia

wadę:

Extra widoki, które są zbędne, gdy Xcode 8 wychodzi

Kroki:

  • Osadź każdy UILabel wewnątrz UIView.
  • Ograniczanie UIView do wielkości sama opiera się na etykiecie (prowadząc mecz, spływu, dno i góra)

Wydaje się UIStackView (w Xcode 7) nie może zrozumieć wewnętrzną zawartość rozmiar etykiety , ale MOŻE zrozumieć rozmiar treści wewnętrznej widoku - więc umieść etykietę w widoku i presto!

enter image description here

+0

Nawet w obecnej wersji Xcode 8 (Beta 6) jest to czasami konieczne. Zgłoszony błąd. – florianbuerger

Powiązane problemy