2017-01-20 1 views
0

Ich habe zwei UILabels, die ich anpassen muss, um den Text richtig anzupassen (nämlich in kleineren, älteren Geräten).Passen UILabel Schriftgröße ohne .adjustsFontForContentSizeCategory

wäre dies leicht mit dem .adjustsFontSizeToFitWidth Eigenschaft gelöst, aber die Sache ist, dass, da beide UILabels in der Nähe von einander und vermitteln ähnliche Informationen sind, ich möchte, dass sie die gleiche Schriftgröße haben (und adjustsFontSizeToFitWidth werden sie unabhängig voneinander einstellen).

Also, was ich dachte zu tun wäre, um irgendwie (das ist, wo ich Hilfe brauche) zu berechnen, was die Schriftgröße für beide Etiketten sein müsste und die kleinste auf beiden verwenden.

image

Alle Ideen, wie dies zu tun? Beide Labels sind mehrzeilig (2 Zeilen) und haben immer die gleiche Größe.

Vielen Dank im Voraus.

+0

Beitrag ein Screenshot. –

+0

Wissen Sie im Voraus, welcher der beiden die kleinste Schrift benötigt? das würde es einfacher machen – Eric

+0

@AdilSoomro hier ist es http://imgur.com/a/5KShO –

Antwort

0

Was Sie tun könnten, haben Sie die .adjustsFontSizeToFitWidth -Eigenschaft true, erhalten Sie Schriftart der kleinsten, dann vergleichen Sie die beiden Breiten und legen Sie die Breite der beiden auf die kleinste. Beispiel in Pseudocode:

.adjustsFontSizeToFitWidth = true 
var fontSizeOne = labelOne.fontSize 
var fontSizeTwo = labelTwo.fontSize 

if(fontSizeOne < fontSizeTwo) 
    { 
    labelTwo.fontSize = labelOne.fontSize 
    } 
else 
    { 
    labelOne.fontSize = labelTwo.fontSize 
    } 
+0

Ich dachte zunächst daran, aber es sieht so aus, dass die fontSize-Eigenschaft trotz Änderung der Schriftgröße gleich bleibt! –

0

könnten Sie @ Willen machen Antwort immer kürzer mit der min Funktion:

labelOne.adjustsFontSizeToFitWidth = true 
    labelTwo.adjustFontSizeToFitWidth = true 

    var fontSizeOne = labelOne.font.pointSize 
    var fontSizeTwo = labelTwo.font.pointSize 

    var min = min(fontSizeOne, fontSizeTwo) 
    labelOne.font = UIFont.systemFont(ofSize: min)) 
    labelTwo.font = labelOne.font 
+0

1. Vielen Dank für die Antwort Eric! Das hat jedoch nicht funktioniert. Wie ich vermutet habe, bleibt die Punktgröße trotz der optischen Änderung der Größe gleich. –

+0

fontSizeOne: 20.0 fontSizeTwo: 20.0 –

+0

Es scheint sehr schwer zu sein, die tatsächliche Schriftgröße, vielleicht [diese Stack-Überlauf Beitrag] (http://stackoverflow.com/questions/34622503/when-do-adjustsfontsizetofitwid- oder -boundingrectwithsize-change-the-context-act) kann Ihnen helfen? – Eric

Verwandte Themen