У меня есть простая форма в моем приложении для iPhone. Форма размечается и управляется через IB и типичное проводное соединение (т.е. Я не создаю эту форму программно).
Одно из полей (и его связанная маркировка) нужно показать, только если установлено конкретное предпочтение.
Я мог установить поле и альфу маркировки к 0 и отключить их в этом случае. Проблема состоит в том, что поля ниже этого теперь невидимого поля остались бы в том же месте и будет большая пустая область. Моя цель состоит в том, чтобы иметь вид экрана, нормальный в любом состоянии.
Существует ли способ программно удалить (или добавить) элементы UI и иметь элементы ниже сдвига или вниз создать место? Или я должен рассмотреть создание целого другого файла NIB для этого второго случая? (и, если я делаю это, существует ли простой способ совместно использовать общие элементы?)
С обоими http://img.skitch.com/20100704-bm41w6wtqkdgh1da99ihb7g32d.jpg
Использование альфы для сокрытия http://img.skitch.com/20100704-q2sxrj3nf6ya68wp6ubn86n2pa.jpg
Желаемый, когда скрытый http://img.skitch.com/20100704-82r876pgctee8gb51ujg1dwj7k.jpg
Когда каждый элемент пользовательского интерфейса связан с указателем IBOutlet, например,
@property (nonatomic, retain) IBOutlet UITextField *field_a;
@property (nonatomic, retain) IBOutlet UITextField *field_b;
@property (nonatomic, retain) IBOutlet UITextField *field_c;
// ...
Вы можете проверить видимость каждого элемента:
if (field_a.hidden) {
// ...
} else {
// ...
}
И перемещать их вокруг:
CGPoint pt = field_a.center;
pt.y -= 60;
field_a.center = pt;
Или с помощью некоторой анимации:
CGPoint position = field_a.center;
position.y -= 60;
[UIView beginAnimations:@"MoveUp" context:NULL];
[UIView setAnimationDuration:0.5];
field_a.center = position;
[UIView commitAnimations];
Чтобы скрыть элемент:
field_a.hidden = YES;
Чтобы показать элемент:
field_a.hidden = NO;
Недавно я видел учебник по этому поводу, в котором участвовало перемещение подпредставления ниже в главном представлении, когда был выбран сегментированный элемент управления. Я считаю, что это была анимация, вызванная beginAnimations: context: , но я не могу найти ссылку на этот учебник прямо сейчас.
По сути, в представлении были скрытые представления, один набор был перемещен в сторону, а другие элементы управления отображены.
Использовать свойства касания какао:
.hidden 1 .userInteractionEnabled 0
Или вы можете:
.alpha = 0