2016-09-07 1 views
0

Привет У меня есть данные, поступающие от JSON, и я показываю их в UILabel. Но если нет данных для определенного значения, UILabel остается пустым с пробелом.UILabel - Отображение данных в нескольких ярлыках

Как я могу удалить пробел UILabel и сделать ниже UILabel, чтобы иметь место с первой меткой и т. Д. Для останова UILabel.

enter image description here

+0

Попробуйте UITableView вместо списка меток. Tableview лучше справится с вашей задачей. – vishnuvarthan

+0

@vishnuvarthan способ лучше. в противном случае вам придется настроить ограничения на код http://stackoverflow.com/questions/18065938/how-to-use-auto-layout-to-move-other-views-when-a-view-is-hidden –

+0

просто добавьте несколько деталей, чтобы было понятно, что лучше .. – vaibhav

ответ

3

1. Установите ограничения на перемещение и перемещение для всей метки.

2. Для первой этикетки установите верхнее ограничение.

3.Set вертикальное расстояние для другой этикетки со значением 0.

Примечание:

Не устанавливайте высоту этикетками.

Первый выход:

enter image description here

Второй выход: (я установить пустой текст для 2-го и 4-го этикетками)

enter image description here

-1
CGRect secondFrame = secondLabel.frame; 
secondLabel.hidden = YES; 
thirdLabel.frame = secondFrame; 

Если у вас есть 4 этикетки, и вы хотите, чтобы скрыть 2-й ярлык и на месте 2-й этикетке вы хотите третий ярлык, чем сделать что-то вроде этого.

+0

Не решение, – ChenSmile

+0

Проверьте измененный ответ. @Imran – KAR

+0

@KAR - вопрос прост, основанный на массиве, он должен видеть текст, чтобы не показывать полный текст –

0

Если вы не хотите использовать табличное представление, вы можете иметь два свойства для каждой метки, т. Е. Ограничение сверху и высоты, и установить константы для метки, если нет значения. Не самое изящное решение, но должно работать. Я могу привести пример, если это необходимо, удачи.

+0

мог бы обновить на примере – ChenSmile

+0

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

-1

Вы можете изменить положение любого UILabel во время выполнения. Имейте в виду, что ваш экран находится в четвертом квадранте. Пример кода:

CGRect frame = labelName.frame; 
frame.origin.y=10;//y value, horizondal 
frame.origin.x= 12;//x value vertical 
labelName.frame= frame;` 

Использование этого средства вы можете сделать то же самое.

+0

У меня есть 15 uilabels, тогда я сделаю целую кучу кода в каждом condtion – ChenSmile

+0

В этом случае есть только 5 uilabels. Если у вас много ярлыков, я бы предпочел делать это с макетами вместо этого. [tutorial by apple] (https://www.google.co.in/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0ahUKEwjdtNGCh_3OAhUILY8KHaIRDOsQFggdMAA&url=https%3A%2F%2Fdeveloper.apple. ком% 2Flibrary% 2Fios% 2Fdocumentation% 2FUserExperience% 2FConceptual% 2FAutolayoutPG% 2F & USG = AFQjCNG3ykOGI4t0LAm1HSaUX9pE17IZSA & Sig2 = GkMpDDr2Ihv-g0C9-60JYQ) – Saranjith

0

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

-(void)addLableTextWith :(NSArray*)jsonList 
{ 
    NSArray * lblArray = [YourContainerView subviews]; 

    for (int i = 0; i <[jsonList count] ; i++) 
    { 
    UILabel * youurLbl = (UILabel*)lblArray[i]; 
    youurLbl.text = jsonList[i]; 
    } 
} 
0

Попробуйте установить ограничения и использовать ограничение по высоте. Установите это значение ограничения < = высота метки. Таким образом, эта метка задается в соответствии с текстом между max и 0.

0

Более простым решением было бы использовать одну метку, в этом случае имена lblДетали и составление отображаемого текста следующим образом

var sDetails = "" 

    // parse sLine1, sLine2, etc., from JSON 

    // build up the string you need 

    if sLine1 != "" 
    { 
     sDetails = sLine1 
    } 
    if sLine2 != "" 
    { 
     sDetails = sDetails + "\n" + sLine2 
    } 
    if sLine3 != "" 
    { 
     sDetails = sDetails + "\n" + sLine3 
    } 

    lblDetails.text = sDetails 

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

  • Нет связанных вопросов^_^