2013-10-09 4 views
-1

С новым iOS7 sizeWithFont:constrainedToSize:lineBreakMode устарел, и я получаю предупреждения об этом в своем XCode 5. Я должен сказать, что это не влияет на функциональность, насколько я могу судить, но я бы хотел найти альтернативу к нему, чтобы удалить раздражающие предупреждения. Вот мой код связан с проблемой:sizeWithFont устарел в iOS7

CGSize minimumLabelSize = [self.subLabel.text sizeWithFont:self.subLabel.font constrainedToSize:maxSize lineBreakMode:NSLineBreakByClipping]; 

и:

expectedLabelSize = [self.subLabel.text sizeWithFont:self.font constrainedToSize:maximumLabelSize lineBreakMode:NSLineBreakByClipping]; 

Я не был в состоянии понять это сам раствор, и я не знаю, что нужно использовать вместо.

+1

Посмотрите здесь: http://stackoverflow.com/questions/19028743/ios7-uitextview-contentsize-height-alternative/19067476#19067476 –

+1

Поиск в Google с помощью параметра sizeWithFont, устаревшего iOS 7, дает совершенно полезное решение для вашей проблемы , Всегда сначала Google. – dandan78

+0

+1 и я хочу знать то же самое. Дело в том, что я хочу знать точное преобразование старого кода в новый код. Документация не дает этого. –

ответ

1
boundingRectWithSize:options:attributes:context: instead. 

Просто проверить Apple, документы:

sizeWithFont:constrainedToSize:lineBreakMode: 

Returns the size of the string if it were rendered with the specified constraints. (Deprecated in iOS 7.0. Use boundingRectWithSize:options:attributes:context: instead.) 

https://developer.apple.com/library/ios/documentation/uikit/reference/NSString_UIKit_Additions/DeprecationAppendix/AppendixADeprecatedAPI.html#//apple_ref/occ/instm/NSString/sizeWithFont:minFontSize:actualFontSize:forWidth:lineBreakMode:

1
-(CGSize) sizeWithFont2:(UIFont *)font 
{ 
    if ([self respondsToSelector:@selector(boundingRectWithSize:options:attributes:context:)]) 
    { 
     CGSize result = [self sizeWithAttributes:@{NSFontAttributeName:font}]; 
     return result; 
    } 
    return [self sizeWithFont:font]; //how to get rid warning here 
} 
- (CGSize) sizeWithFont2:(UIFont *)font constrainedToSize:(CGSize)size 
{ 
    if ([self respondsToSelector:@selector(boundingRectWithSize:options:attributes:context:)]) 
    { 
     CGRect frame = [self boundingRectWithSize:size 
              options:(NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading) 
             attributes:@{NSFontAttributeName:font} 
              context:nil]; 
     return frame.size; 
    } 
    else 
    { 
     return [self sizeWithFont:font constrainedToSize:size]; //how to get rid warning here 
    } 
} 

Примечание: Если они совершенно эквивалентны, почему яблоко должно обесценивать старые?

Смежные вопросы