UILineBreakModeWordWrap jest przestarzały


83

Oto mój kod:

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

Otrzymuję ostrzeżenie, że UILinebBreakModeWordWrap jest przestarzałe w iOS 6.

Odpowiedzi:


204

Musisz używać NSLineBreakByWordWrappingw iOS 6

W przypadku swojego kodu spróbuj tego:

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

przykład na etykiecie to:

[label setLineBreakMode:NSLineBreakByWordWrapping];

Zamiast

label.lineBreakMode = UILineBreakModeWordWrap;

1
Dlaczego Apple właśnie zmieniło nazwę? Jaki jest cel?
Paul Brewczyński 06.04.14

14

Aby zachować zgodność z poprzednimi wersjami, możesz utworzyć makro, jak poniżej:

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

Dlaczego Xcode nadal oflagowuje ostrzeżenia, jeśli istnieje makro?
GP Williama

Czy masz min SDK <= ios 6? używasz szybkiego czy obiektywnego C?
Mihriban Minaz

SDK to 9,2, minimalny cel to ios7, Obj-C
William GP

Następnie użyj bezpośrednio NSLineBreakByWordWrapping.
Mihriban Minaz
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.