2013-09-30 42 views
0

以下的NSString方法已在IOS 7被棄用:sizeWithFont:替換

- (CGSize)sizeWithFont:(UIFont *)font NS_DEPRECATED_IOS(2_0, 7_0, "Use -sizeWithAttributes:"); 

    - (CGSize)sizeWithFont:(UIFont *)font forWidth:(CGFloat)width lineBreakMode: 
(NSLineBreakMode)lineBreakMode NS_DEPRECATED_IOS(2_0, 7_0, "Use -boundingRectWithSize:options:attributes:context:"); 

    - (CGSize)sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size NS_DEPRECATED_IOS(2_0, 7_0, "Use -boundingRectWithSize:options:attributes:context:"); 

    - (CGSize)sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size lineBreakMode:(NSLineBreakMode)lineBreakMode NS_DEPRECATED_IOS(2_0, 7_0, "Use -boundingRectWithSize:options:attributes:context:"); 

雖然更換爲第一個是簡單的,其餘沒有這麼多。什麼是boundingRectWithSize:options:attributes:context:獲得完全相同的結果的等效呼叫?

特別是:

  • 應該是什麼的options價值?
  • 如何指定lineBreakMode
+0

我有一種感覺,這個問題即將SO推動明年 – Stavash

+0

應當注意的是,這個問題包含了大部分的答案在礦井(即使範圍是不同的):http://stackoverflow.com/questions/18897896/replacement-for-deprecated-sizewithfont-in-ios-7?rq=1。也許對另一個問題的更詳細的答案會更合適。我正在投票結束我自己的問題以防萬一。 – hpique

回答

1

。如何指定lineBreakMode?

NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init]; 
[paragraphStyle setLineBreakMode:NSLineBreakByTruncatingTail]; 
[attributedStr addAttribute:NSParagraphStyleAttributeName 
       value:paragraphStyle 
       range:NSMakeRange(0,[attributedStr length])]; 
1

添加此

UIFont *font = [UIFont boldSystemFontOfSize:16]; 
CGRect new = [string boundingRectWithSize:CGSizeMake(200, 300) options:NSStringDrawingUsesFontLeading attributes:@{NSFontAttributeName: font} context:nil]; 
CGSize stringSize= new.size;