2014-02-09 3 views
2

sizeWithFont: ConstrainedToSize: lineBreakMode: метод устарел в iOS 7, и я немного не уверен, как с этим справиться. После небольшого исследования в Интернете, я обнаружил, что есть новый метод для обработки этого, который:sizeWithFont: ConstrainedToSize: lineBreakMode: метод устарел в iOS 7

[txt drawWithRect: options: attributes: context:] 

Это метод, который я в настоящее время пытаюсь запустить:

+ (CGSize)textSizeForText:(NSString *)txt 
{ 
    CGFloat width = [UIScreen mainScreen].applicationFrame.size.width * 0.75f; 
    CGFloat height = MAX([JSBubbleView numberOfLinesForMessage:txt], 
         [txt numberOfLines]) * [JSMessageInputView textViewLineHeight]; 


    return [txt sizeWithFont:[JSBubbleView font] 
      constrainedToSize:CGSizeMake(width - kJSAvatarSize, height + kJSAvatarSize) 
       lineBreakMode:NSLineBreakByWordWrapping]; 

} 

Но я '' с трудным преобразованием времени в новый метод. В основном с помощью lineBreakMode: это нигде в новом методе. Есть идеи?

+0

возможно дубликат [устаревшее в прошивкой 7 "sizeWithFont: constrainedToSize: lineBreakMode:" как я могу замена] (http://stackoverflow.com/ вопросы/18903304/deprecated-in-ios-7-sizewithfont-constrainedtosize-linebreakmode-how-can) – bbarnhart

ответ

13

в новом методе, для разрыва строки, вы должны создать NSMutableParagraphStyle стиль первого:

NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init]; 
    paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping; 

Затем просто использовать новый метод, передав все необходимые параметры

CGRect textRect = [text boundingRectWithSize:CGSizeMake(width - kJSAvatarSize, height + kJSAvatarSize) 
             options:NSStringDrawingUsesLineFragmentOrigin 
            attributes:@{NSParagraphStyleAttributeName: paragraphStyle.copy} 
             context:nil]; 

    return textRect.size; 

если вы что это волна, вы можете сделать

return ([text boundingRectWithSize:CGSizeMake(width - kJSAvatarSize, height + kJSAvatarSize) 
             options:NSStringDrawingUsesLineFragmentOrigin 
            attributes:@{NSParagraphStyleAttributeName: paragraphStyle.copy} 
             context:nil]).size; 

Надеюсь, что поможет

я добавлю атрибуты шрифта в ответе выше

return ([text boundingRectWithSize:CGSizeMake(width - kJSAvatarSize, height + kJSAvatarSize) 
             options:NSStringDrawingUsesLineFragmentOrigin 
            attributes:@{NSParagraphStyleAttributeName: paragraphStyle.copy, NSFontAttributeName:[UIFont fontWithName:@"HelveticaNeue" size:14]} 
             context:nil]).size; 
+0

Это работает! Спасибо! –

+0

Эй, спасибо за ответ, я просто добавлю атрибут шрифта вместе с lineBreakMode – Meenakshi

+0

Что такое paragraphStyle? Эта переменная отсутствует в устаревшем коде, то какое значение оно должно иметь? – Josh

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