Aktualizacja 3:
To ostrzeżenie może być również wyzwalane przez etykiety, które mają numberOfLines
wartość inną niż 1, jeśli docelowy poziom wdrożenia jest ustawiony na 7.1. Jest to całkowicie powtarzalne w przypadku nowego projektu z jednym widokiem.
Kroki ku reprodukcji:
- Utwórz nowy projekt typu single-view, target-c
- Ustaw cel wdrożenia na 7.1
- Otwórz scenariusz projektu
- Upuść etykietę na dostarczonym kontrolerze widoku
- Ustaw numberOfLines dla tej etykiety na 2.
- Skompilować
Zapisałem następujący radar: rdar: // problem / 18700567
Aktualizacja 2:
Niestety, jest to znowu kwestia w wydanej wersji Xcode 6. Zauważ, że w większości przypadków możesz ręcznie edytować storyboard / xib, aby rozwiązać problem. Per Charles A. w komentarzach poniżej:
Warto wspomnieć, że dość łatwo można przypadkowo wprowadzić to ostrzeżenie, a samo ostrzeżenie nie pomaga w znalezieniu winowajcy. Jest to niefortunne w złożonej scenariuszu. Możesz otworzyć scenorys jako plik źródłowy i wyszukać za pomocą wyrażenia regularnego, <label(?!.*preferredMaxLayoutWidth)
aby znaleźć etykiety, które pomijają preferowany atrybut / wartość MaxMayLayoutWidth. Jeśli dodasz w preferowanych MaxMayLayoutWidth = "0" w takich wierszach, będzie to równoznaczne z zaznaczeniem jawnym i ustawieniem wartości 0.
Aktualizacja 1:
Ten błąd został teraz naprawiony w Xcode 6 GM.
Oryginalna odpowiedź
To jest błąd w Xcode6-Beta6 i XCode6-Beta7 i na razie można go bezpiecznie zignorować.
Inżynier firmy Apple na forach Apple, deweloper miał to do powiedzenia na temat błędu:
Preferowana maksymalna szerokość układu to właściwość automatycznego układu na UILabel, która pozwala mu automatycznie rosnąć w pionie w celu dopasowania do jego zawartości. Wersje Xcode wcześniejsze niż 6.0 ustawiałyby preferowanyMaxLayoutWidth dla etykiet wielowierszowych na bieżący rozmiar granic w czasie projektowania. W przypadku zmiany układu poziomego konieczne byłoby ręczne zaktualizowanie preferowanego MaxLayoutWidth w czasie wykonywania.
iOS 8 dodał obsługę automatycznego obliczania preferowanego MaxLayoutWidth w czasie wykonywania, co jeszcze bardziej ułatwia tworzenie etykiet wielowierszowych. To ustawienie nie jest wstecznie zgodne z iOS 7. Aby obsługiwać zarówno iOS 7, jak i iOS 8, Xcode 6 pozwala wybrać „Automatyczny” lub „Jawny” dla preferowanego MaxLayoutWidth w inspektorze wielkości. Powinieneś:
Wybierz „Automatyczny”, jeśli kierujesz reklamy na iOS 8, aby uzyskać najlepszą jakość. Wybierz „Jawne”, jeśli celujesz w <iOS 8. Możesz następnie wprowadzić wartość preferowanego MaxLayoutWidth, który chcesz ustawić. Włączenie opcji „Jawne” powoduje ustawienie domyślnego rozmiaru bieżących granic w momencie zaznaczenia pola.
Ostrzeżenie pojawi się, jeśli (1) korzystasz z automatycznego układu, (2) „Etykieta automatyczna” jest ustawiona dla etykiety wielowierszowej [możesz to sprawdzić w inspektorze rozmiaru etykiety] oraz (3) twój cel wdrożenia <iOS 8
Wygląda na to, że błąd polega na tym, że to ostrzeżenie pojawia się w przypadku dokumentów nieautomatycznych. Jeśli widzisz to ostrzeżenie i nie używasz automatycznego układu, możesz je zignorować.
Alternatywnie możesz obejść ten problem, używając inspektora plików w serii ujęć lub xib, o którym mowa, i zmień opcję „Kompilacje dla” na „Kompilacje dla systemu iOS 8.0 i nowszych”