Мне нужно измерить ширину пикселя строки в Cocoa Touch. Может ли кто-нибудь указать мне ссылку, которая объясняет, как это сделать?Измерение ширины пикселя строки
ответ
На iPhone OS это немного отличается, вместо этого посмотрите на NSString UIKit Additions Reference. Идея такая же, как в Cocoa для Mac OS X, но есть и другие методы.
Для отдельных строк текста использования:
- (CGSize)sizeWithFont:(UIFont *)font
forWidth:(CGFloat)width
lineBreakMode:(UILineBreakMode)lineBreakMode
И для многострочных текстов используют:
- (CGSize)sizeWithFont:(UIFont *)font
constrainedToSize:(CGSize)size
lineBreakMode:(UILineBreakMode)lineBreakMode
Использование UILineBreakMode
в качестве аргумента для отдельных строк текста может сбивать с толку, но это потому что разрыв строки также используется для определения того, как обрезать текст.
Кажется, что это нормально для обычных шрифтов, но, похоже, он не дает точных границ для шрифтов, таких как Zapfino. Пример кода находится по адресу http://paste.lisp.org/display/130803, а скриншот на выходе - http://ScrnSht.com/juixwk. Любая идея, почему и как ее решить? – trss
устарел в iOS7 .. документы не относятся к какой-либо замене .. есть ли какие-либо? – abbood
Текущие документы iOS7 (Xcode 5.0.1) относятся к заменам (которые, как правило, относятся только к iOS7). – JLundell
Посмотрите на NSString Application Kit Additions Reference, в частности boundingRectWithSize:options:attributes:
. Значение, возвращаемое этой процедурой, должно дать вам ширину вашего NSString
.
В документации не очень понятно, как на самом деле использовать 'boundingRectWithSize: options: attributes:'. Было бы неплохо, если бы вы могли добавить пример того, как на самом деле использовать этот метод для измерения строки с определенным шрифтом. – PeyloW
Вышеупомянутое решение теперь устарело. Проверьте это для iOS 7+
sizeWithFont:constrainedToSize:lineBreakMode
отменено сейчас. Используйте ниже фрагмент кода,
UIFont *font=[UIFont fontWithName:@"Arial" size:16.f];
NSString *name = @"APPLE";
CGSize size = [name sizeWithAttributes:@{NSFontAttributeName:font}];
Вы не должны просить общего Objective-C ответ, когда этот вопрос действительно о функциях какао для Mac OS X или Cocoa Touch для iPhone OS. Objective-C - это просто язык программирования, который использует как Cocoa, так и Cocoa Touch. – PeyloW
Есть ли другое использование объектива-c помимо программирования для Mac OS или IOS? Если да, то это важно? –