不推荐使用UILineBreakModeWordWrap


83

这是我的代码:

CGSize s = [string sizeWithFont:[UIFont systemFontOfSize:20]
               constrainedToSize:CGSizeMake(self.view.bounds.size.width - 40, CGFLOAT_MAX) // - 40 For cell padding
                   lineBreakMode:UILineBreakModeWordWrap];

我收到一条警告,指出iOS 6中已弃用UILinebBreakModeWordWrap。

Answers:


204

您需要NSLineBreakByWordWrapping在iOS 6中使用

对于您的代码,请尝试以下操作:

NSString *string = @"bla";

CGSize s = [string sizeWithFont:[UIFont systemFontOfSize:20]
              constrainedToSize:CGSizeMake(self.view.bounds.size.width - 40, CGFLOAT_MAX) // - 40 For cell padding
                  lineBreakMode:NSLineBreakByWordWrapping];

标签上的示例为:

[label setLineBreakMode:NSLineBreakByWordWrapping];

代替

label.lineBreakMode = UILineBreakModeWordWrap;

1
为什么苹果只是改名呢?目的是什么?
Paul Brewczynski 2014年

14

为了保持向后兼容性,可以创建如下的宏:

#ifdef __IPHONE_6_0
# define LINE_BREAK_WORD_WRAP NSLineBreakByWordWrapping
#else
# define LINE_BREAK_WORD_WRAP UILineBreakModeWordWrap
#endif

如果宏存在,为什么Xcode仍然标记警告?
William GP

您是否有min SDK <= ios 6?您使用swift还是Objective-C?
Mihriban Minaz'3

SDK为9.2,最小目标为ios7,Obj-C
William GP

然后直接使用NSLineBreakByWordWrapping。
Mihriban Minaz'3
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.