2015-02-09 4 views
0

Я пытаюсь получить свое свойство UITableViewCell.textLabel для автоподбора текста как по вертикали, так и по горизонтали.UITableViewCell подходит textLabel для всего кадра

Прямо сейчас мой tableView не прокручивается, поэтому рамка cell не является динамической. Мне нужно свойство textLabel для переноса слов и изменения размера к набору строк. Установка numberOfLines на 0 не работает, потому что она обрезана, потому что моя высота cell меньше, чем конечная высота textLabel. Используя произвольное число для numberOfLines, отрезает текст.

Как изменить размер textLabel в соответствии с framecell?

Код ниже

- (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 

    UITableViewCell* cell = (UITableViewCell*)[tableView @"mycell"]; 

    cell.textLabel.text = @"LOTS OF TEXT"; 

    cell.textLabel.textAlignment = NSTextAlignmentCenter; 
    [cell.textLabel textRectForBounds:cell.bounds limitedToNumberOfLines:0]; 
    cell.textLabel.lineBreakMode = NSLineBreakByWordWrapping; 
    cell.textLabel.numberOfLines = 0; 
    cell.textLabel.adjustsFontSizeToFitWidth = YES; 
    cell.textLabel.minimumScaleFactor = .5; 
} 
+0

Вы хотите изменить размер ячейки на основе содержимого textLable? –

+0

@sanginadhammurali нет, ячейка статична по высоте. Я хочу изменить размер 'textLabel' на основе статической высоты – DaynaJuliana

+0

попытаться предоставить текстовые фреймы x и y позиции (0,0) в файле nib, и если если строки строк более двух и даже после NSLineBreakByWordWrapping, то это не работая, тогда увеличьте textlable hieght, он будет работать. –

ответ

1

EDIT: Если клетки представляют собой набор высоты это просто. Вам нужно будет установить в нем настраиваемую ячейку и textLabel, так как я не думаю, что вы не можете изменить textLabel в базовых или других ячейках предустановки так, как вам нужно. Просто добавьте текстовую метку и установите ограничения, связывающие ее с четырьмя сторонами, с минимальной суммой (может быть равна нулю). Ярлыки автоматически центрируют текст по вертикали, если есть лишнее пространство, поэтому сделать ярлык слишком высоким не должно быть проблемой.

Оригинальный ответ:


Если вы не используете Tableview самостоятельно проклейки клетки, может поддерживать IOS 7, то это не имеет значения, что вы делаете в клетке, поскольку этот вопрос находится в tableView высоты строки. Если на одной метке будет работать классический метод boundingRect. в tableView:heightForRowAtIndexpath: сделать

NSString *stringFromDataSource = @"Text For Label"; 
    CGSize potentialSize = CGSizeMake(CGRectGetWidth(self.tableview.frame), CGFLOAT_MAX); 
    NSStringDrawingOptions optionsForMultiline = NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading; 
    NSDictionary *attributes = @{ 
          NSFontAttributeName : [UIFont preferredFontForTextStyle:UIFontTextStyleBody] 
          }; //or whatever 
    CGRect rectForText = [stringFromDataSource boundingRectWithSize:potentialSize 
            options:optionsForMultiline 
            attributes:attributes 
            context:nil]; 
    return CGRectGetHeight(rectForText); 

Обратите внимание, что в вашем вопросе, ваши различные варианты размеров ячейки не будут использоваться, если TextLabel расширяется с autolayout, если не существует ограничение укупорки максимального размера, при котором точка minimumScaleFactor и т. д. начнут работать.

+0

Я хочу, чтобы моя «ячейка» была статичной высотой, так что бы вышеприведенное не работало? – DaynaJuliana

+0

это все еще не работает. Создание пользовательской ячейки прототипа с помощью UILabel с автозапуском, содержащимся в полях, все еще отрывает текст метки – DaynaJuliana

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