2016-02-02 16 views
14

Chcę dopasować mój tekst do numeru UILabel, ale w przypadku innego iPhone'a rozmiar UILabel zmienia się, ponieważ używam automatycznego układu, ale nie mogę naprawić rozmiaru czcionki, więc mój tekst jest wycięty.Jak dynamicznie zmieniać rozmiar czcionki w automatycznym układzie iOS?

Czy mogę ustawić dowolne ograniczenie, aby tekst był dynamicznie dopasowywany do zmiennej UILabel?

See here the text got cut, because of different screen resolution

+0

Spróbuj zmniejszyć zawartość priorytet tulenie etykiety – iAnurag

+0

trzeba ustawić rozmiar czcionki programowo –

+0

zawartość priorytetem przytulanie jest ustawiony na 251, i jest to najniższy odpowiednio do innych ograniczeń @iAnurag –

Odpowiedz

32

Należy użyć autoshrink.

Ponieważ wszystkie iPhony mają tę samą klasę rozmiaru, co w trybie portretu, nie można polegać na tym, aby obsłużyć rozmiar etykiety.


Zapowiedzi są dla iPhone5, iPhone6 ​​i iPhone 6+

enter image description here

w Inspektorze, należy wybrać minimalną skalę czcionki lub minimalny rozmiar czcionki przed autoshrink. Umożliwia to zmianę rozmiaru czcionki w celu dopasowania jej do etykiety.

Tutaj ustawiam minimalną skalę czcionki na 0,5, więc minimalny rozmiar to połowa bieżącego rozmiaru (31.0). Tekst będzie próbował dopasować, dopóki nie osiągnie minimalnej skali/rozmiaru.

(Zasadniczo nie należy używać w tym celu "Dokręcanie odstępów między literami", Dokręcanie odstępów między literami ma taki sam rozmiar czcionki i zmniejsza odstępy między literami. Może to spowodować, że etykieta będzie od 2% do 5% bardziej zwarta przed obcięciem, ale nie będzie skuteczna gdy minimalna skala czcionki/rozmiar jest włączona.)


Możesz przetestować z szerokim ekranem urządzenia takie jak iPad Pro, a także na mniejszym ekranie, takich jak iPhone 4S .

Autoskórowanie nie dostosuje rozmiaru czcionki większego niż ustawiony na etykiecie, co oznacza, że ​​jeśli etykieta będzie miała taką samą szerokość jak ekran, ale pozostawi rozmiar czcionki na , spróbuje zwiększyć czcionkę rozmiar, aż osiągnie ten rozmiar.

Aby to zadziałało, wybierz rozmiar czcionki duży.

Możesz nadal łączyć autosszyfrowanie z klasami wielkości, aby zmienić maksymalny rozmiar czcionki w zależności od urządzenia/orientacji.


W przypadku, gdy chcesz użyć autoshrink z UIButton s, nadal można ustawić to zachowanie z dwóch linii kodu.

myButton.titleLabel.minimumScaleFactor = 0.5; 
myButton.titleLabel.adjustsFontSizeToFitWidth = YES; 
+0

@Joe Blow Nie musisz używać ogromnego rozmiaru czcionki, aby to działało, po prostu ustaw maksymalny rozmiar czcionki na etykiecie - ten, którego chcesz użyć na iPadzie Pro. Zawsze testuj na wszystkich rozmiarach ekranu, możesz łatwo mieć podgląd z asystentem _preview editor_, tak jak pokazałem. – Crazyrems

+0

hi @Crazyrems - całkiem dobrze; ale nie zapominaj, że nowa maszyna jest zawsze wydawana z jeszcze większą liczbą fizycznych pikseli! Jeszcze raz dziękuję za wspaniałą odpowiedź. Może się okazać, że jest to przydatne ... http://stackoverflow.com/q/37266118/294884 .. lub znasz odpowiedź? – Fattie

+0

@ Crazyrems jak możemy to zrobić dla textfields lub textviews? – ARS

4

Cześć jeśli dodajesz UILabel z ujęć można ustawić inną czcionkę dla wszystkich dostępnych układzie.

enter image description here

+0

Doskonała odpowiedź dzięki bardzo! doskonały ? ponieważ działa z fontem uilabel i czcionką uibutton !!! Autosramka nie działa z uibuttonem –

+1

@ WilliamsOuiOui autoshrink działa z 'UIButton's, przycisk zawiera' UILabel' :). Po prostu ustaw właściwości autosramka 'titleLabel' twojego' UIButton'. Zaktualizowałem swoją odpowiedź. – Crazyrems

4

Można to zrobić za pomocą klas wielkości. każdy wymiar wyświetlacza przy użyciu klasy wielkości, spowoduje to cztery abstrakcyjne urządzenia: regularna szerokość-regularna wysokość, regularna szerokość-kompaktowa wysokość, kompaktowa szerokość-regularna wysokość i kompaktowa szerokość-kompaktowa wysokość. Poniższa tabela przedstawia urządzenia iOS i odpowiadające im klasy wielkości.  enter image description here

Aby ustawić rozmiar czcionki dla danej klasy wielkości, należy najpierw wybrać UILabel. W obszarze Inspektor atrybutu powinien być widoczny przycisk plus (+) obok pola czcionki. Kliknij przycisk + i wybierz opcję Kompaktowa szerokość> Wysokość standardowa (lub zgodnie z wymaganiami wybierz szerokość & Wysokość). Pojawi się nowy wpis dla opcji Czcionka, która jest przeznaczona dla tej konkretnej klasy wielkości. Zachowaj rozmiar nienaruszony dla pierwotnej opcji Czcionka, ale zmień rozmiar pola WC hR (LUB jak do wyboru) na wymagane punkty (na przykład 14).

enter image description here

+0

Dziękuję, to jest przydatne, czy istnieje inny sposób, czy mogę utworzyć relację między rozmiarem etykiety a rozmiarem czcionki i ustawić ograniczenie? –

+0

Można użyć właściwości adjustsFontSizeToFitWidth o wartości UILable https://developer.apple.com/library/ios/documentation/UIKit/Reference/UILabel_Class/index.html#//apple_ref/occ/instp/UILabel/adjustsFontSizeToFitWidth –

Powiązane problemy