2013-03-01 17 views

Odpowiedz

38

Kod ten zakłada, że ​​label ma żądany tekst, a jego ramka jest już ustawiona na żądaną szerokość.

- (int)lineCountForLabel:(UILabel *)label { 
    CGSize constrain = CGSizeMake(label.bounds.size.width, FLT_MAX); 
    CGSize size = [label.text sizeWithFont:label.font constrainedToSize:constrain lineBreakMode:UILineBreakModeWordWrap]; 

    return ceil(size.height/label.font.lineHeight); 
} 

Aktualizacja:

Jeśli chcesz to określić wymaganą wysokość dla etykiety na podstawie jego tekstu i aktualnej szerokości, a następnie zmienić na:

- (CGSize)sizeForLabel:(UILabel *)label { 
    CGSize constrain = CGSizeMake(label.bounds.size.width, FLT_MAX); 
    CGSize size = [label.text sizeWithFont:label.font constrainedToSize:constrain lineBreakMode:UILineBreakModeWordWrap]; 

    return size; 
} 

Zwracany size to właściwa szerokość i wysokość, które mają zawierać etykietę.

+0

Twoje pytanie dotyczące obliczania liczby linii. Czy chcesz naprawdę wymaganą wysokość (w punktach)? – rmaddy

+0

jak napisałeś liczbę linii równą wysokości podzielonej przez linię wysokości. Chciałem znać liczbę linii, aby obliczyć prawidłową wysokość mojej etykiety przy zachowaniu stałej szerokości. – Alexis

+0

faktycznie twoje rozwiązanie działa dobrze. Dzięki! – Alexis

4

Pierwszy uzyskać wysokość etykiety od wielkości etykiet za pomocą constrainedSize

CGSize labelSize = [label.text sizeWithFont:label.font 
          constrainedToSize:label.frame.size 
           lineBreakMode:UILineBreakModeWordWrap]; 
CGFloat labelHeight = labelSize.height; 

raz masz wysokość etykiety następnie sprawdzić liczbę linii z rozmiaru czcionki gdzie fontsize jest rozmiar używasz dla swojej etykieta. na przykład może to być 10 lub w zależności od wymagań

CGSize sizeOfText = [label.text sizeWithFont:label.font 
         constrainedToSize:label.frame.size 
          lineBreakMode:UILineBreakModeWordWrap]; 
int numberOfLines = sizeOfText.height/label.font.pointSize; 
+0

jak mogę poprawić szerokość? – Alexis

+0

Dzielenie przez fontSize jest wspaniałe, dzięki. –

+2

przestarzałe w iOS 7 –

-1

Można obliczyć wysokość pionowego niezbędne do wyświetlania ciąg pomocą sizeWithFont: constrainedToSize: sposób na NSString. Biorąc pod uwagę ten rozmiar, można zmienić rozmiar etykiety, aby wyświetlić cały ciąg.

Powiązane problemy