2013-06-11 3 views
0

У меня есть длинная строка под названием theString в моем коде, которую я перехожу к методу drawRect: для рисования на экране.Может ли размер для - [NSString drawInRect:] быть определен содержимым строки?

-(void)drawRect:(CGRect)rect 
{ 
    [super drawRect:rect]; 
    [theString drawInRect:CGRectMake(0, 0, self.bounds.size.width, 200)]; 
} 

Как вы можете видеть, я могу просто установить ширину до размера экрана, но высота должна быть установлена ​​вручную, что является проблемой, когда струна передается имеют разную длину. Как автоматически определить высоту кадра? Также в будущем я могу расширить это, включив в себя атрибутную строку с разными стилями шрифта, поэтому подсчет символов может быть не очень хорошим вариантом.

+0

возможно дубликат [Измерение ширины пикселя строки] (http://stackoverflow.com/questions/1435544/measuring-the-pixel-width-of-a-string) –

+0

Я не думаю, что будет помогите мне, поскольку атрибутная строка будет иметь разные шрифты, стили и т. д. Я прав? – Giovanni

+0

Если вы специально спрашиваете об использовании 'NSAttributedString', то, пожалуйста, отредактируйте свой вопрос, чтобы это отразить. Существует аналогичный метод: http://developer.apple.com/library/ios/documentation/UIKit/Reference/NSAttributedString_UIKit_Additions/Reference/Reference.html#//apple_ref/doc/uid/TP40011688-CH1-SW7 –

ответ

2

Что вы можете сделать, это получить шрифт, текст будет иметь

UIFont *myFont = [UIFont fontWithName:@"SOME_NAME" size:16]; 

, а затем использовать NSString «s метод sizeWithFont:, например, так:

CGSize theStringSize = [theString sizeWithFont:myFont]; 

Наконец, установите ширину вашей строки и высота:

[theString drawInRect:CGRectMake(0, 0, theStringSize.width, theStringSize.height)]; 

Надеюсь, это поможет!

+0

Да, к сожалению, это моя проблема, текст в конечном итоге будет полной страницей текста, выложенной заголовками, шрифтами разного размера и т. д., поэтому использование функции sizeWithFont будет работать правильно? – Giovanni

0

вы можете это сделать RTLabel. Скачать по этой ссылке RTLabel.h

RTLabel.m

использовать его: набор текста RTLabel объект, он будет Генделя HTML строку также и получить размер RTLabel объекта, это будет размер вашего текста.

Смежные вопросы