В iOS 7 метод:
- (CGSize)sizeWithFont:(UIFont *)font
constrainedToSize:(CGSize)size
lineBreakMode:(NSLineBreakMode)lineBreakMode
и метод:
- (CGSize)sizeWithFont:(UIFont *)font
устарели. Как я могу заменить
CGSize size = [string sizeWithFont:font
constrainedToSize:constrainSize
lineBreakMode:NSLineBreakByWordWrapping];
и:
CGSize size = [string sizeWithFont:font];
-sizeWithAttributes:
.Ответы:
Вы можете попробовать это:
Просто измените «FONT» на «[UIFont font ....]»
источник
NSLineBreakByWordWrapping
будет идти в пределахNSParagraphStyle
. Так, например:NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init]; paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping;
в атрибуты, которые вам нужно будет добавитьNSParagraphStyleAttributeName: paragraphStyle.copy
...boundingRectWithSize:options:attributes:context:
возвращает дробные значения. Вам нужно сделатьceil(textRect.size.height)
иceil(textRect.size.width)
соответственно получить реальную высоту / ширину.Поскольку мы не можем использовать sizeWithAttributes для всех iOS более 4.3, мы должны написать условный код для 7.0 и предыдущих версий iOS.
1) Решение 1:
2) Решение 2
Первое решение - иногда не вернуть правильное значение высоты. так что используйте другое решение. который будет работать отлично.
Второй вариант довольно хорошо работает и работает плавно во всех iOS без условного кода.
источник
Вот простое решение:
Требования :
Сейчас, поскольку
constrainedToSizeusage:lineBreakMode:
использование устарело в iOS 7.0 :Теперь использование в большей версии iOS 7.0 будет:
источник
Ниже приведены два простых метода, которые заменят эти два устаревших метода.
И вот соответствующие ссылки:
Если вы используете NSLineBreakByWordWrapping, вам не нужно указывать NSParagraphStyle, так как это значение по умолчанию: https://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/Classes/NSParagraphStyle_Class/index. HTML # // apple_ref / ОКК / CLM / NSParagraphStyle / defaultParagraphStyle
Вы должны получить предел размера, чтобы соответствовать результатам устаревших методов. https://developer.apple.com/library/ios/documentation/UIKit/Reference/NSString_UIKit_Additions/#//apple_ref/occ/instm/NSString/boundingRectWithSize:options:attributes:context :
источник
В большинстве случаев я использовал метод sizeWithFont: constrainedToSize: lineBreakMode: чтобы оценить минимальный размер UILabel для размещения его текста (особенно, когда метка должна быть размещена внутри UITableViewCell) ...
... Если это именно ваша ситуация, вы можете просто использовать метод:
Надеюсь, это поможет.
источник
источник
[Принятый ответ хорошо работает в категории. Я перезаписываю устаревшие имена методов. Это хорошая идея? Кажется, работает без жалоб в Xcode 6.x]
Это работает, если ваша цель развертывания 7.0 или выше. Категория есть
NSString (Util)
NSString + util.h
NSString + Util.m
источник
из двух ответов 1 + 2
источник