2013-06-03 2 views
1

Мои UILabel в UITableViewCell и вот мой кодВ UILabel как многострочный текст с обычаем ширина

lblgoal = [[UILabel alloc] initWithFrame:CGRectMake(60,10, 250, 20)]; 
CGSize maximumLabelSize1 = CGSizeMake(230,9999); 
      lblgoal.numberOfLines = 0; 
      lblgoal.adjustsFontSizeToFitWidth = NO; 
      CGSize expectedLabelSize = [sg.subgoal_name sizeWithFont:lblgoal.font 
                constrainedToSize:maximumLabelSize 
                lineBreakMode:lblsubgoal1.lineBreakMode]; 
CGRect newFrame = lblgoal.frame; 
      newFrame.size.height = expectedLabelSize.height; 
      lblgoal.frame = newFrame; 

Но это работает только, если я поставил ширину UILabel до 200, если я поставил более 200 ширину , то все это происходит в одной строке с пунктиром в конце. И, UITableView ширина ячейки больше 500.

+0

использование '[Алабель setNumberOFlines: 5];' и смотреть на [это] (http://stackoverflow.com/a/1054681/2239920) – user23790

+0

насколько велика ваша высота ячейки? – kushyar

ответ

1

На самом деле, убедитесь, чтобы установить linebreakmode в UILineBreakModeWordWrap как в вашей функции sizeWithFont и ваша метка lblgoal, как показано ниже:

lblgoal.numberOfLines = 0; 
lblgoal.lineBreakMode = UILineBreakModeWordWrap; //NSLineBreakByWordWrapping for iOS 6 

EDIT: Попробуйте sizeToFit после установки lineBreakMode.

[lblgoal sizeToFit]; 

Также убедитесь, что вы делаете это внутри метода cellForRowAtIndexPath.

Вы также должны реализовать следующий метод делегата, чтобы убедиться, что высота вашей ячейки также соответствующим образом скорректирована.

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
+0

, кстати, в ios 6 его, NSLineBreakByWordWrapping, но это тоже не сработает, спасибо – user1495387

+0

см. Мое редактирование выше. – kushyar

+0

Вы правы в NSLineBreakByWordWrapping, если ваша цель - iOS 6. попробуйте sizeToFit. Это самое простое решение для UITableViewCell, помимо подкласса UITableViewCell – kushyar

0

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

CGSize maximumLabelSize1 = CGSizeMake(230,9999); 

Вместо этого используйте

CGSize maximumLabelSize1 = CGSizeMake(MAXFLOAT, MAXFLOAT); 

Но это даст Оппертьюнити расширить ширину любого расширения. Который не собирается работы для и .. Так устанавливается максимальная ширина до 500

CGSize maximumLabelSize1 = CGSizeMake(500, MAXFLOAT); 

и установить рамку для надписи:

CGRect newFrame = lblgoal.frame; 
newFrame.size.height = expectedLabelSize.height; 
newFrame.size.width = expectedLabelSize.width; 
0
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
    { 
    if (!self.lastIndexPath) 
    { 
     self.lastIndexPath = indexPath; 
    } 

    if ([self.lastIndexPath row] != [indexPath row]) 
    { 
     UITableViewCell *newCell = [tableView cellForRowAtIndexPath: indexPath]; 
     newCell.accessoryType = UITableViewCellAccessoryCheckmark; 

     UITableViewCell *oldCell = [tableView cellForRowAtIndexPath:self.lastIndexPath]; 
     oldCell.accessoryType = UITableViewCellAccessoryNone; 

     self.lastIndexPath = indexPath; 
    } 
    else { 
     UITableViewCell *newCell = [tableView cellForRowAtIndexPath: indexPath]; 
     newCell.accessoryType = UITableViewCellAccessoryCheckmark; 
    } 
Смежные вопросы