Показать/Скрыть элементы iphone UI на основе prefs - как к?

У меня есть простая форма в моем приложении для iPhone. Форма размечается и управляется через IB и типичное проводное соединение (т.е. Я не создаю эту форму программно).

Одно из полей (и его связанная маркировка) нужно показать, только если установлено конкретное предпочтение.

Я мог установить поле и альфу маркировки к 0 и отключить их в этом случае. Проблема состоит в том, что поля ниже этого теперь невидимого поля остались бы в том же месте и будет большая пустая область. Моя цель состоит в том, чтобы иметь вид экрана, нормальный в любом состоянии.

Существует ли способ программно удалить (или добавить) элементы UI и иметь элементы ниже сдвига или вниз создать место? Или я должен рассмотреть создание целого другого файла NIB для этого второго случая? (и, если я делаю это, существует ли простой способ совместно использовать общие элементы?)

Текущий UI с обоими показанными средствами управления

С обоими http://img.skitch.com/20100704-bm41w6wtqkdgh1da99ihb7g32d.jpg

UI с дополнительным управлением, скрытым через альфу == 0

Использование альфы для сокрытия http://img.skitch.com/20100704-q2sxrj3nf6ya68wp6ubn86n2pa.jpg

Желаемый UI с дополнительным скрытым управлением

Желаемый, когда скрытый http://img.skitch.com/20100704-82r876pgctee8gb51ujg1dwj7k.jpg

7
задан davetron5000 4 July 2010 в 18:52
поделиться

3 ответа

Когда каждый элемент пользовательского интерфейса связан с указателем 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;
8
ответ дан 7 December 2019 в 03:10
поделиться

Недавно я видел учебник по этому поводу, в котором участвовало перемещение подпредставления ниже в главном представлении, когда был выбран сегментированный элемент управления. Я считаю, что это была анимация, вызванная beginAnimations: context: , но я не могу найти ссылку на этот учебник прямо сейчас.

По сути, в представлении были скрытые представления, один набор был перемещен в сторону, а другие элементы управления отображены.

0
ответ дан 7 December 2019 в 03:10
поделиться

Использовать свойства касания какао:

.hidden 1 .userInteractionEnabled 0

Или вы можете:

.alpha = 0

1
ответ дан 7 December 2019 в 03:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: