2016-11-14 2 views
0

Независимо от того, я установил количество строк в 0 или 100, он просто не изменится и тексты остаются ... в конце. Я пробовал NSLineBreakByWordWrapping, но он просто удалил ... и ничего не сделал.Цель c label.numberOflines не работает

UILabel *label = [[UILabel alloc] init]; 
[cell.contentView addSubview:label]; 
label.text = myString; 
label.frame = CGRectMake(17, 42, 200, 30); 
[label sizeToFit]; 
label.lineBreakMode = NSLineBreakByWordWrapping; 
label.numberOfLines = 0; 
+0

Я изменил, но он все еще не работает. – bubibu

+0

найти ответ на http://stackoverflow.com/questions/990221/multiple-lines-of-text-in-uilabel ... –

+0

Что вы имеете в виду, если не работаете? _This свойство управляет максимальным количеством строк для использования, чтобы поместить текст метки в его ограничивающий прямоугольник ._ –

ответ

2

Используйте этот

UILabel *label = [[UILabel alloc] init]; 

label.text = @"myStringsdsdvsvdsdvsdvsdndbndbnbdnbdnbdnpopopoploplklioolnhbfghrmyString"; 

label.numberOfLines = 0; 
label.frame = CGRectMake(0, 50, 320, 568); 

[self.view addSubview:label]; 

label.frame = CGRectMake(0, 42, [self widthForLabel:label withText:label.text], [self height:label withText:label.text]); 

label.backgroundColor = [UIColor redColor]; 

для динамического ширина

-(CGFloat)widthForLabel:(UILabel *)label withText:(NSString *)text 
{ 
    if (text.length > 0) 
    { 
     NSAttributedString *attributedText = [[NSAttributedString alloc] initWithString:text attributes:@{NSFontAttributeName:label.font}]; 
     CGRect rect = [attributedText boundingRectWithSize:(CGSize){label.frame.size.width, CGFLOAT_MAX} 
                options:NSStringDrawingUsesLineFragmentOrigin 
                context:nil]; 

     return ceil(rect.size.width); 

    } 

return 0; 

}

для динамической высоты

-(CGFloat)height:(UILabel *)label withText:(NSString *)text 
{ 
    if (text.length > 0) 
    { 
     NSAttributedString *attributedText = [[NSAttributedString alloc] initWithString:text attributes:@{NSFontAttributeName:label.font}]; 
     CGRect rect = [attributedText boundingRectWithSize:(CGSize){label.frame.size.width, CGFLOAT_MAX} 
                options:NSStringDrawingUsesLineFragmentOrigin 
                context:nil]; 

     return ceil(rect.size.height); 
    } 

    return 0; 
} 

enter image description here

здесь проблема в том, что вам нужно, чтобы инициализировать метку с некоторой рамкой, как этот

label.frame = CGRectMake(0, 50, 320, 568); 

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

Надеюсь, что это сработает.

+0

Ваше решение работает как очарование для меня. Будьте здоровы. Вы знаете, как установить динамическую высоту строки? self.table.estimatedRowHeight = 44.f; и self.table.rowHeight = UITableViewAutomaticDimension; не работают для меня. – bubibu

+0

Это нормально. если этот ответ лучше всего подходит для вашего решения, тогда отметьте отметку на верхнем, чтобы другой мог также получить ее очень легко. теперь позвольте мне решить вашу другую проблему с вашей высотой tableView. –

+0

есть один метод, где вы можете установить высоту динамически - (CGFloat) tableView: (UITableView *) tableView heightForRowAtIndexPath: (NSIndexPath *) indexPath. используйте свою логику здесь. –

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