Dans iOS 7, la méthode:
- (CGSize)sizeWithFont:(UIFont *)font
constrainedToSize:(CGSize)size
lineBreakMode:(NSLineBreakMode)lineBreakMode
et la méthode:
- (CGSize)sizeWithFont:(UIFont *)font
sont obsolètes. Comment puis-je remplacer
CGSize size = [string sizeWithFont:font
constrainedToSize:constrainSize
lineBreakMode:NSLineBreakByWordWrapping];
et:
CGSize size = [string sizeWithFont:font];
-sizeWithAttributes:
.Réponses:
Vous pouvez essayer ceci:
Changez simplement "FONT" pour une "[police UIFont ....]"
la source
NSLineBreakByWordWrapping
irait dans unNSParagraphStyle
. Ainsi par exemple:NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init]; paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping;
Dans les attributs, vous devrez alors ajouterNSParagraphStyleAttributeName: paragraphStyle.copy
...boundingRectWithSize:options:attributes:context:
renvoie des valeurs fractionnaires. Vous devez faireceil(textRect.size.height)
etceil(textRect.size.width)
respectivement pour obtenir la hauteur / largeur réelle.Comme nous ne pouvons pas utiliser sizeWithAttributes pour tous les iOS supérieurs à 4.3, nous devons écrire du code conditionnel pour 7.0 et les versions antérieures d'iOS.
1) Solution 1:
2) Solution 2
La première solution est parfois de ne pas renvoyer la valeur appropriée de la hauteur. alors utilisez une autre solution. qui fonctionnera parfaitement.
La deuxième option est assez bien et fonctionne correctement dans tous les iOS sans code conditionnel.
la source
Voici une solution simple:
Exigences :
Maintenant que l'
constrainedToSizeusage:lineBreakMode:
utilisation est obsolète dans iOS 7.0 :Désormais, l'utilisation dans la version supérieure d' iOS 7.0 sera:
la source
Vous trouverez ci-dessous deux méthodes simples qui remplaceront ces deux méthodes obsolètes.
Et voici les références pertinentes:
Si vous utilisez NSLineBreakByWordWrapping, vous n'avez pas besoin de spécifier le NSParagraphStyle, car c'est la valeur par défaut: https://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/Classes/NSParagraphStyle_Class/index. html # // apple_ref / occ / clm / NSParagraphStyle / defaultParagraphStyle
Vous devez obtenir le plafond de la taille, pour correspondre aux résultats des méthodes obsolètes. https://developer.apple.com/library/ios/documentation/UIKit/Reference/NSString_UIKit_Additions/#//apple_ref/occ/instm/NSString/boundingRectWithSize:options:attributes:context :
la source
Dans la plupart des cas, j'ai utilisé la méthode sizeWithFont: constrainedToSize: lineBreakMode: pour estimer la taille minimale d'un UILabel pour accueillir son texte (en particulier lorsque l'étiquette doit être placée dans un UITableViewCell) ...
... Si c'est exactement votre situation, vous pouvez simplement utiliser la méthode:
J'espère que cela pourrait aider.
la source
la source
[La réponse acceptée fonctionne bien dans une catégorie. J'écrase les noms de méthodes obsolètes. Est-ce une bonne idée? Semble fonctionner sans aucune plainte dans Xcode 6.x]
Cela fonctionne si votre cible de déploiement est 7.0 ou supérieure. La catégorie est
NSString (Util)
NSString + Util.h
NSString + Util.m
la source
à partir de deux réponses 1 + 2
la source