En iOS 7, el método:
- (CGSize)sizeWithFont:(UIFont *)font
constrainedToSize:(CGSize)size
lineBreakMode:(NSLineBreakMode)lineBreakMode
y el método:
- (CGSize)sizeWithFont:(UIFont *)font
están en desuso. ¿Cómo puedo reemplazar
CGSize size = [string sizeWithFont:font
constrainedToSize:constrainSize
lineBreakMode:NSLineBreakByWordWrapping];
y:
CGSize size = [string sizeWithFont:font];
-sizeWithAttributes:
.Respuestas:
Podrías probar esto:
Simplemente cambie "FONT" por una "[fuente UIFont ...]"
fuente
NSLineBreakByWordWrapping
iría dentro de aNSParagraphStyle
. Entonces, por ejemplo:NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init]; paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping;
en los atributos que necesitaría agregarNSParagraphStyleAttributeName: paragraphStyle.copy
...boundingRectWithSize:options:attributes:context:
devuelve valores fraccionarios. Debe hacerceil(textRect.size.height)
yceil(textRect.size.width)
respectivamente para obtener la altura / anchura real.Como no podemos usar sizeWithAttributes para todos los iOS superiores a 4.3, tenemos que escribir código condicional para 7.0 y iOS anteriores.
1) Solución 1:
2) Solución 2
La primera solución es en algún momento no devolver el valor adecuado de altura. entonces usa otra solución. que funcionará perfectamente
La segunda opción está bastante bien y funciona sin problemas en todos los iOS sin código condicional.
fuente
Aquí hay una solución simple:
Requisitos:
Ahora como el
constrainedToSizeusage:lineBreakMode:
uso está en desuso en iOS 7.0 :Ahora el uso en una versión mayor de iOS 7.0 será:
fuente
A continuación hay dos métodos simples que reemplazarán estos dos métodos obsoletos.
Y aquí están las referencias relevantes:
Si está utilizando NSLineBreakByWordWrapping, no necesita especificar NSParagraphStyle, ya que ese es el valor predeterminado: https://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/Classes/NSParagraphStyle_Class/index. html # // apple_ref / occ / clm / NSParagraphStyle / defaultParagraphStyle
Debe obtener el límite máximo del tamaño para que coincida con los resultados de los métodos obsoletos. https://developer.apple.com/library/ios/documentation/UIKit/Reference/NSString_UIKit_Additions/#//apple_ref/occ/instm/NSString/boundingRectWithSize:options:attributes:context :
fuente
En la mayoría de los casos, utilicé el método sizeWithFont: restrictinedToSize: lineBreakMode: para estimar el tamaño mínimo para que un UILabel acomode su texto (especialmente cuando la etiqueta debe colocarse dentro de UITableViewCell) ...
... Si esta es exactamente su situación, simplemente puede usar el método:
Espero que esto pueda ayudar.
fuente
fuente
[La respuesta aceptada funciona bien en una categoría. Estoy sobrescribiendo los nombres de métodos obsoletos. ¿Es esta una buena idea? Parece funcionar sin quejas en Xcode 6.x]
Esto funciona si su objetivo de implementación es 7.0 o superior. La categoría es
NSString (Util)
NSString + Util.h
NSString + Util.m
fuente
de dos respuestas 1 + 2
fuente