Как переносить текст по словам? - PullRequest
1 голос
/ 09 июня 2009

В Какао есть метод ( lineBreakBeforeIndex: withinRange: ) для NSAttributedString, чтобы найти подходящие разрывы строк в куске текста.

Поскольку NSAttributedString не существует на iPhone, есть ли у кого-нибудь какие-либо предложения для аналогичной функциональности?

Редактировать: Понял, что я действительно ищу алгоритм переноса слов. Например, я хочу, чтобы текст был перенесен на 80 символов; где разместить разрывы строк, чтобы слова не разбивались на две строки?

Редактировать: пример, вероятно, поможет. Скажем, у меня есть следующие строки:
Вот строка 1, которая, вероятно, даже не будет длиной 80 символов.
Вот еще одна строка с другим текстом, который длиннее, но ненамного.

Я бы хотел превратить это в нечто вроде:
Вот строка 1, которая, вероятно,
даже не будет 80 символов
долго.
Вот еще одна строка с
другой текст, который является
дольше, но не намного.

Редактировать: я хочу поместить этот текст в UITextView, чтобы можно было вносить дополнительные изменения (очень похоже на цитируемый ответ с электронными письмами)

Ответы [ 4 ]

1 голос
/ 09 июня 2009

Зависит от того, что вам нужно, вы можете разорвать текст в UILabel (например, если вы делаете многострочный текст, например, внутри UITableViewCell).

См:

http://www.doubleencore.com/blog/2009/01/18/iphone-dev-tip-using-uilabels-numberoflines-adjustsfontsizetowidth/

http://developer.apple.com/iPhone/library/documentation/UIKit/Reference/UILabel_Class/Reference/UILabel.html#//apple_ref/occ/instm/UILabel/textRectForBounds:limitedToNumberOfLines:

http://blog.sallarp.com/iphone-uilabel-multiline-dynamic-height/

Этот метод задает размер (прямоугольник), в который должен вписываться текст - возможно, вы можете обновить его, чтобы рассчитать, какой размер составляет 80 символов с вашим шрифтом, затем создать прямоугольник этого размера и вписать в него текст. *

0 голосов
/ 28 июля 2011

Он не дает прямого ответа на вопрос ОП, но именно этот ответ я и искал, когда поиск привел меня к этому вопросу:

Подбор размера UILabel?

и, в частности, этот ответ от BadPirate:

@interface UILabel (BPExtensions)
- (void)sizeToFitFixedWidth:(CGFloat)fixedWidth;
@end

@implementation UILabel (BPExtensions)


- (void)sizeToFitFixedWidth:(CGFloat)fixedWidth
{
    self.frame = CGRectMake(self.frame.origin.x, self.frame.origin.y, fixedWidth, 0);
    self.lineBreakMode = UILineBreakModeWordWrap;
    self.numberOfLines = 0;
    [self sizeToFit];
}
@end

затем иметь метку для переменной высоты строки, но с фиксированной шириной:

[myLabel sizeToFitFixedWidth:kSomeFixedWidth];

0 голосов
/ 09 июня 2009

Уже есть вопрос об алгоритмах переноса слов: Лучший алгоритм переноса слов?

0 голосов
/ 09 июня 2009
NSString *newString = [oldString stringByReplacingOccurrencesOfString:@"\n" withString:@"<br />"];

Это найдет все ваши разрывы строк и заменит их тегом "
". Просто отредактируйте его для своих нужд. :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...