UILabel Несколько строк в iOS6

Мне нужно показать несколько строк в UILabel (если текст большой). Ниже мой код. Я использую отдельные свойства для разных версий iOS. Пожалуйста, помогите мне..

    labelLocation.numberOfLines=2;
    labelLocation.font=[UIFont systemFontOfSize:25];
    if ([[[UIDevice currentDevice]systemVersion]floatValue]>=6) {
        labelLocation.lineBreakMode=NSLineBreakByTruncatingTail;
        labelLocation.minimumScaleFactor=10.0/[UIFont labelFontSize];
    }else{
        labelLocation.lineBreakMode=UILineBreakModeTailTruncation;
        labelLocation.minimumFontSize=10;
    }
    labelLocation.text=@"Can we make UILabeltext in 2 lines if name is large";

person user1829463    schedule 13.08.2013    source источник
comment
Не могли бы вы рассказать немного о проблеме, которая у вас есть? Кстати, две строки кода действительно помещаются в рамку этикетки?   -  person Hermann Klecker    schedule 13.08.2013
comment
У меня есть этикетка размером 230x40. Мне нужно показать текст в две строки, когда текст большой.   -  person user1829463    schedule 13.08.2013
comment
проверьте мой отредактированный код и попробуйте увеличить рамку этикетки.   -  person Manthan    schedule 13.08.2013
comment
вы можете попробовать labelLocation.numberOfLines=0;   -  person Toseef Khilji    schedule 13.08.2013
comment
Ваша проблема решена?   -  person Manthan    schedule 13.08.2013
comment
Можете ли вы решить проблему с неработающими многострочными линиями iOS 6?   -  person neobie    schedule 11.02.2016


Ответы (6)


эти две строки вместе работают

labelLocation.numberOfLines=0;
labelLocation.lineBreakMode = NSLineBreakByWordWrapping;
person Warewolf    schedule 13.08.2013
comment
Увеличил высоту, теперь все работает. Но MinimumScaleFactor не работает. Любой комментарий! - person user1829463; 13.08.2013
comment
MinimumScaleFactor означает, что ваша метка уменьшит размер до масштабного коэффициента, который вы определили, если не заполните весь текст в метке. Он не уменьшит размер шрифта больше, чем это. Прочтите его stackoverflow.com/a/15332231/1305001 - person Warewolf; 13.08.2013

вы можете установить

 yourlabelname.lineBreakMode = NSLineBreakByWordWrapping;
 yourlabelname.numberOfLines = give how many lines you want for your label(e.g.2,3,etc...)

и проверьте, правильно ли настроена ваша розетка.

person Manthan    schedule 13.08.2013
comment
Спасибо за поддержку, но я уже использую это свойство. Посмотрите на первую строку кода. - person user1829463; 13.08.2013
comment
Максимум две линии. И я использовал свойство NSLineBreakByWordWrapping. Не работает - person user1829463; 13.08.2013
comment
Согласно вашему коду, если он переходит в состояние else, вам необходимо изменить UILineBreakModeTailTruncation. UILineBreakModeTailTruncation работает только с одной меткой строки. - person Manthan; 13.08.2013
comment
Пожалуйста, проверьте высоту и ширину вашей этикетки. - person Manthan; 13.08.2013

Попробуйте это labelLocation.numberOfLines=0;

person Leta0n    schedule 13.08.2013

Я предполагаю, что ваша этикетка имеет небольшую высоту. Две строки в systemFontOfSize 25 должны иметь высоту около 60. Если метка слишком маленькая, система не переносит строку.

person Tomasz Wojtkowiak    schedule 13.08.2013
comment
Я также использую свойство MinimumScaleFactor! - person user1829463; 13.08.2013
comment
Это эффективно, только когда numberOfLines = 1; - person Tomasz Wojtkowiak; 13.08.2013

измените свой код на этот

labelLocation.numberOfLines=0;
labelLocation.font=[UIFont systemFontOfSize:40];
labelLocation.lineBreakMode=NSLineBreakModeWordWrap;
labelLocation.text=@"Can we make UILabeltext in 2 lines if name is large";
person Vivek Vijayan    schedule 13.08.2013

Я бы лично порекомендовал вам рассчитать высоту, необходимую для отображения текста, а затем показать его на метке ... никогда не отображать компоненты жесткого кода, такие как UITextView и UILable.

 NSString *str = @"This is to test the lable for the auto increment of height. This is only a test. The real data is something different.";


`UIFont * myFont = [UIFont fontWithName:@"Arial" size:12];//specify your font details here
//then calculate the required height for the above text.

CGSize lableSiZE = [str sizeWithFont:myFont constrainedToSize:CGSizeMake(240, CGFLOAT_MAX) lineBreakMode:NSLineBreakByWordWrapping];

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

 UILabel *myLable = [[UILabel alloc] initWithFrame:CGRectMake(10, 10, lableSiZE.width, lableSiZE.height)];

myLable.text = str;
myLable.numberOfLines=0;
myLable.font=[UIFont fontWithName:@"Arial" size:12];
//myLable.backgroundColor=[UIColor redColor];
myLable.lineBreakMode = NSLineBreakByWordWrapping;
person Master Stroke    schedule 13.08.2013