2012-01-25 2 views
2

Как описано в названии, у меня есть приложение с двумя UILabels друг под другом. Если я хочу скрыть сверху до программно, это возможно с помощью myLabel.hidden = true.Два UILabels друг под другом, скрыть верхнюю

Если я делаю это в Android (с myLabel.setVisibility (View.Gone);), метка под этой меткой будет двигаться вверх.

Но если я делаю это для iOS, ярлык скрыт, но все же пустое место вместо метки.

enter image description here

Любая идея, как я могу это исправить?

+0

Что мы предполагаем увидеть в это скриншот? Также вы уверены, что у вас есть две метки? –

+0

@Vince Хорошо, у меня есть три ярлыка, конечно. Если я скрою второй, третий должен быть расположен под первым. На скриншоте вы можете увидеть пустое пространство, если вы спрячете ярлык. – harmjanr

+0

ярлык не будет двигаться вверх, измените его 'frame', чтобы сделать это. –

ответ

2

Когда скрывается второй, получить его рамку, скрыть и изменить свойство кадра из третьего:

CGRect secondFrame = secondLabel.frame; 
secondLabel.hidden = YES; 
thirdLabel.frame = secondFrame; 
+0

Это действительно работает, спасибо за это. Но дело в том, что у меня есть 8 ярлыков друг под другом. Каждое содержимое этикеток может быть пустым, а если оно пустое, оно не должно отображаться. Это означает, что мне нужно изменить довольно много кадров .. =/ – harmjanr

+0

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

+0

@harmjanr для iOS просто перестраивает представление, содержащее все метки, если один из них изменяется –

0

сделать что-то вроде этого:

[UIView animateWithDuration:0.3 
       animations:^{label1.alpha = 0; 
           label2.frame = label1.frame} 
       completion:NULL]; 
Смежные вопросы