基于prefs显示/隐藏iphone UI元素-如何?

基于prefs显示/隐藏iphone UI元素-如何?,iphone,cocoa-touch,interface-builder,Iphone,Cocoa Touch,Interface Builder,我的iPhone应用程序中有一个简单的表单。表单通过IB和典型布线进行布局和管理(即,我不是以编程方式创建此表单) 仅当设置了特定首选项时,才应显示其中一个字段(及其相关标签) 我可以将字段和标签的alpha设置为0,并在这种情况下禁用它们。问题是,这个现在不可见的字段下面的字段将保留在相同的位置,并且会有一个很大的空白区域。我的目标是让屏幕在任何一种状态下都看起来正常 有没有一种方法可以通过编程方式删除(或添加)UI元素,并让下面的元素上移或下移以腾出空间?或者我应该考虑为这个第二个案例做一个

我的iPhone应用程序中有一个简单的表单。表单通过IB和典型布线进行布局和管理(即,我不是以编程方式创建此表单)

仅当设置了特定首选项时,才应显示其中一个字段(及其相关标签)

我可以将字段和标签的alpha设置为0,并在这种情况下禁用它们。问题是,这个现在不可见的字段下面的字段将保留在相同的位置,并且会有一个很大的空白区域。我的目标是让屏幕在任何一种状态下都看起来正常

有没有一种方法可以通过编程方式删除(或添加)UI元素,并让下面的元素上移或下移以腾出空间?或者我应该考虑为这个第二个案例做一个完整的笔头文件吗?(如果我这样做了,有没有一种简单的方法来分享共同元素?)

显示两个控件的当前用户界面

通过alpha==0隐藏可选控件的UI

隐藏可选控件的所需UI

我最近看到了一个关于这方面的教程,其中涉及到在选择分段控件时在主视图中向下移动子视图。我相信这是一个动画触发了,但我现在找不到一个参考教程


本质上,视图下有隐藏的视图,其中一组被移到一边,而其他控件则不隐藏。

当每个UI元素都链接到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;
要显示元素,请执行以下操作:

field_a.hidden = YES;
field_a.hidden = NO;

使用cocoa touch属性:

.隐藏1 .userInteractionEnabled 0

或者你可以:


.alpha=0

我最后做的几乎就是这样,然而,我得到了我隐藏的元素的高度,并将下面的元素向上移动了该量,以避免在其中包含实际值。