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];

Я отримую попередження про те, що UILinebBreakModeWordWrap застарілий у iOS 6.

Відповіді:


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
Чому Apple просто змінила його назву? Яка мета?
Paul Brewczynski

14

Для підтримки зворотної сумісності ви можете створити макрос, як показано нижче:

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

Чому Xcode все ще позначає попередження, якщо там є макрос?
William GP

Чи маєте ви мінімальний SDK <= ios 6? ви використовуєте swift або object-C?
Міхрібан Міназ

SDK - 9,2, мінімальна ціль - ios7, Obj-C
William GP

Потім використовуйте NSLineBreakByWordWrapping безпосередньо.
Міхрібан Міназ,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.