No iOS 7, o método:
- (CGSize)sizeWithFont:(UIFont *)font
constrainedToSize:(CGSize)size
lineBreakMode:(NSLineBreakMode)lineBreakMode
e o método:
- (CGSize)sizeWithFont:(UIFont *)font
estão obsoletos. Como posso substituir
CGSize size = [string sizeWithFont:font
constrainedToSize:constrainSize
lineBreakMode:NSLineBreakByWordWrapping];
e:
CGSize size = [string sizeWithFont:font];
-sizeWithAttributes:
.Respostas:
Você pode tentar o seguinte:
Basta alterar "FONT" para um "[UIFont font ....]"
fonte
NSLineBreakByWordWrapping
iria dentro de umNSParagraphStyle
. Assim, por exemplo:NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init]; paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping;
Nos atributos que você seria então necessário adicionarNSParagraphStyleAttributeName: paragraphStyle.copy
...boundingRectWithSize:options:attributes:context:
retorna valores fracionários. Você precisa fazerceil(textRect.size.height)
e,ceil(textRect.size.width)
respectivamente, obter a altura / largura reais.Como não podemos usar sizeWithAttributes para todos os iOS maiores que 4,3, precisamos escrever um código condicional para o iOS 7.0 e anterior.
1) Solução 1:
2) Solução 2
A primeira solução é, em algum momento, não retornar o valor adequado da altura. então use outra solução. o que irá funcionar perfeitamente.
A segunda opção está muito bem e funcionando sem problemas em todo iOS sem código condicional.
fonte
Aqui está uma solução simples:
Requisitos:
Agora como o
constrainedToSizeusage:lineBreakMode:
uso foi descontinuado no iOS 7.0 :Agora, o uso na versão maior do iOS 7.0 será:
fonte
Abaixo estão dois métodos simples que substituirão esses dois métodos preteridos.
E aqui estão as referências relevantes:
Se você estiver usando NSLineBreakByWordWrapping, não precisará especificar o NSParagraphStyle, pois esse é o padrão: https://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/Classes/NSParagraphStyle_Class/index. html # // apple_ref / occ / clm / NSParagraphStyle / defaultParagraphStyle
Você deve obter o teto do tamanho para corresponder aos resultados dos métodos descontinuados. https://developer.apple.com/library/ios/documentation/UIKit/Reference/NSString_UIKit_Additions/#//apple_ref/occ/instm/NSString/boundingRectWithSize:options:attributes:context :
fonte
Na maioria dos casos, usei o método sizeWithFont: constrainedToSize: lineBreakMode: para estimar o tamanho mínimo de um UILabel para acomodar seu texto (especialmente quando o rótulo deve ser colocado dentro de um UITableViewCell) ...
... Se essa é exatamente a sua situação, você pode simplesmente usar o método:
Espero que isso possa ajudar.
fonte
fonte
[A resposta aceita funciona bem em uma categoria. Estou substituindo os nomes dos métodos obsoletos. isso é uma boa ideia? Parece funcionar sem reclamações no Xcode 6.x]
Isso funciona se o seu destino de implantação for 7.0 ou superior. A categoria é
NSString (Util)
NSString + Util.h
NSString + Util.m
fonte
de duas respostas 1 + 2
fonte