2016-08-31 1 views
0

J'ai un UILabel défini ci-dessous:adjustsFontSizeToFitWidth ne fonctionne pas correctement UILabel

let disclaimerLabel : TTTAttributedLabel = { 
    let label = TTTAttributedLabel(frame: CGRectZero) 
    label.textColor = UIColor.whiteColor() 
    label.font = UIFont.boldSystemFontOfSize(13) 
    label.textAlignment = .Center 
    label.numberOfLines = 1 
    label.minimumScaleFactor = 0.01 
    label.adjustsFontSizeToFitWidth = true 
    label.text = "By logging in, you agree to our Privacy Policy and T&C." 
    return label 
}() 

Maintenant, le problème est que sur les téléphones plus anciens tels que l'iPhone 4, la ligne de texte ne correspond pas à une ligne. Je pensais que ce serait résolu par la ligne label.adjustsFontSizeToFitWidth = true, mais au lieu de rétrécir la taille du texte de manière appropriée, le texte de l'étiquette apparaît comme ceci: By logging in, you agree to our Privacy Policy... je ne peux pas avoir cette étiquette ont plus d'une ligne, je ne peux donc pas utiliser numberofLines = 2 ou label.lineBreakMode = NSLineBreakMode.ByTruncatingTail

Il est absolument nécessaire dans ce cas que le texte entier soit visible dans une ligne. Comment puis-je atteindre cet objectif?

+0

Il serait vraiment utile si vous avez posté le code de votre sous-classe – borchero

+0

Il est largement disponible sur github, mais il ne remplace aucune de ces propriétés, donc le comportement devrait être le même que celui d'un 'UILabel' – Alk

+0

menant pour lui comme égal à self.view avec constant 'self.view.frame.width * 0.1' et même avec trailing donc fondamentalement 80% de la largeur de l'écran – Alk

Répondre

0

Si votre appareil est exactement iPhone 4 (donc il fonctionne sous iOS 7.0 ou moins), c'est le point.

La .adjustsFontSizeToFitWidth propriété est disponible sur iOS SDK 8.0 et versions ultérieures:

https://developer.apple.com/reference/uikit/uilabel/1620546-adjustsfontsizetofitwidth

Si vous avez besoin d'une ligne uniquement pour une étiquette, utilisez .minimumScaleFactor pour ios inférieurs à 8,0 au lieu.

+0

C'est un iPad 2 en cours d'exécution Je l'ai comparé à iPhone4 parce que l'application est pour iPhone et je n'utilise que mon iPad pour tester, mais j'ai trouvé que les applications iPhone natives se comportent très bien sur iPad 2 et sur iPhone Ligne 4,4s – Alk