Усеченный текст в TTStyledTextLabel - PullRequest
4 голосов
/ 07 сентября 2010

Я использую TTStyledTextLabel в своем проекте для разбора гиперссылок, все работает нормально.Единственная проблема, с которой я сталкиваюсь - это урезать длинный текст - показывать эллипсы, если текст не вписывается в границы TTStyledTextLabel.

Другими словами, мне нужно такое же поведение, как UILabel, который добавляет эллипсычтобы указать, что какой-то текст обрезан.Я искал в TTStyledTextLabel и TTStyledText классах, нет никаких условий для этого.Ниже приведен код, который я использовал в своем подклассе UITableViewCell для установки фрейма TTStyledTextLabel соответствующим образом:

-(void) layoutSubviews
{
    [super layoutSubviews];
.
.
.
    CGSize maxSize = CGSizeMake(self.contentView.frame.size.width -TEXT_OFFSET_WIDTH, TT_TEXT_MAX_HEIGHT);
    [[[self textLabelTTStyled] text] setWidth:maxSize.width];
    [[self textLabelTTStyled] sizeToFit];
    double heigthForTTLabel = [[[self textLabelTTStyled] text] height];
    if (heigthForTTLabel > maxSize.height)
        heigthForTTLabel = maxSize.height;  // Do not exceed the maximum height for the TTStyledTextLabel.
**// The Text was supposed to clip here when maximum height is set!**
    CGSize mTempSize = CGSizeMake([[[self textLabelTTStyled] text] width], heigthForTTLabel);
    CGRect frame = CGRectMake(TEXT_OFFSET_X,TEXT_OFFSET_Y,mTempSize.width, mTempSize.height);
    self.textLabelTTStyled.frame = frame;
.
.
.
}

А в tableView:cellForRowAtIndexPath: я задаю такой текст для моего TTStyledTextLabel:

TTStyledText *styledStatusMessage = [TTStyledText textFromXHTML:@"This is a really long text, how long can this go on? This is a really long text, how long can this go on? This is a really long text, how long can this go on? This is a really long text, how long can this go on? This is a really long text, how long can this go on? This is a really long text, how long can this go on?"
    lineBreaks:YES URLs:YES];

if (nil == styledStatusMessage) {
  styledStatusMessage = [TTStyledText textWithURLs:[statusMessage title] lineBreaks:YES];
  [[cell textLabelTTStyled] setText:styledStatusMessage];
}

Излишний текст просто отбрасывается, эллипсы по умолчанию не добавляются, чтобы указать, что текст обрезан.Любые решения этой проблемы?

Спасибо, Радж

1 Ответ

0 голосов
/ 12 октября 2011

Я полагаю, что вы используете частный api Three20, который может быть отклонен из магазина приложений. Просто проверьте один раз перед загрузкой. В общем, вы можете установить любой набор любой пользовательской кнопки с названием заголовка

[кнопка setContentHor HorizontalAlignment: UIControlContentHor HorizontalAlignmentLeft]; [кнопка setTitleEdgeInsets: UIEdgeInsetsMake (0.0, 10.0, 0.0, 0.0)]; - Эта линия может быть использована для расчета краев заголовка. Надеюсь, это поможет.

...