Как вернуть многострочный текст CGSize из нового метода iOS 7 sizeWithAttributes?
Я хотел бы, чтобы результат был таким же, как у sizeWithFont: constrainedToSize.
NSString *text = @"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus eu urna quis lacus imperdiet scelerisque a nec neque. Mauris eget feugiat augue, vitae porttitor mi. Curabitur vitae sollicitudin augue. Donec id sapien eros. Proin consequat tellus in vehicula sagittis. Morbi sed felis a nibh hendrerit hendrerit. Lorem ipsum dolor sit."
CGSize textSize = [text sizeWithAttributes:@{ NSFontAttributeName : [UIFont fontWithName:@"HelveticaNeue-Light" size:16.0] }];
Этот метод выдает высоту только для одной строки текста.
objective-c
ios7
morcutt
источник
источник
Ответы:
ну вы можете попробовать это:
источник
@{...}
. Как это называется?sizeWithFont:constrainedToSize:
устаревший исходный метод. Apple, должно быть, действительно нас ненавидит. В любом случае +1.MAXFLOAT
вместоCGFLOAT_MAX
?var size = textToMeasure.boundingRectWithSize( CGSizeMake(width, CGFloat.max), options: NSStringDrawingOptions.UsesLineFragmentOrigin, attributes:attrs, context:nil).size
Вот как я это сделал:
источник
Swift 2.3:
Свифт 4:
источник
Вот мой метод решения обеих ситуаций, который попадает в
NSString
категорию.источник
Для Xamarin.iOS:
источник
Если у вас есть текст, шрифт, количество строк и ширина вашей метки, этот метод возвращает размер вашей метки:
источник
В качестве альтернативы, если вы смотрите на
UITextView
, вы всегда можете использоватьNSLayoutManager
метод:Вы также можете найти высоту строки для данного шрифта:
источник
[Как новый пользователь, я не могу оставить комментарий к ответу @testing, но чтобы сделать его ответ (для xamarin.ios) более полезным]
Мы можем вернуть CGRect и использовать только параметр высоты для элемента графического интерфейса, на который мы нацеливаемся, UIButton и т. Д., Передавая любые параметры, которые нам нужны, как показано ниже
источник
использовать
ceilf
метод для правильного управленияисточник