我有一个 ViewController,许多 UITextFields(一个在另一个下面)和一个在第一个 UITextField 右侧的按钮。
按下按钮时,我希望在此下方显示另一个 UITextField(每次按下按钮时都会在另一个下创建一个文本字段)并将其他一些像素向下移动。
我怎样才能做到这一点?我想我必须用 InterfaceBuilder 制作一个新的 UIView,其中的文本字段会向下移动一些像素,但我不能这样做。
我有一个 ViewController,许多 UITextFields(一个在另一个下面)和一个在第一个 UITextField 右侧的按钮。
按下按钮时,我希望在此下方显示另一个 UITextField(每次按下按钮时都会在另一个下创建一个文本字段)并将其他一些像素向下移动。
我怎样才能做到这一点?我想我必须用 InterfaceBuilder 制作一个新的 UIView,其中的文本字段会向下移动一些像素,但我不能这样做。
使用 UITableViewController 怎么样?基本上,您可以将第一个 UITextField(在 UITableViewCell 内)和第二部分中的其余字段设置为第一部分。然后,每次按下按钮时,您都会在第一部分插入一个新单元格。
管理字段的插入和删除很容易,无需手动处理视图的移动(它们由 UITableView 自动处理),您所要做的就是更新数据源(单元格数)并重新加载/插入单元格(reloadData 或 insertRowsAtIndexPaths:withRowAnimation:)。
如果您愿意,我会建议一个非常简单的解决方案,即在 CGRectMake坐标中使用变量代替y坐标。
更详细一点:
您必须以编程方式创建所有 UITextField,并且每当您分配 initwithFrame 时,任何 UITextField 都使用如下变量:
int y = 10; // By default value and make it a property and define in viewDidLoad or wherever
UITextField *txtField1 = [[UITextField alloc]initWithFrame:CGRectMake(10, 20 +y, 100, 50)];
// set TextFields other values
[self addSubview:txtField1];
UITextField *txtField1 = [[UITextField alloc]initWithFrame:CGRectMake(10, 80+y, 100, 50)];
// set TextFields other values
[self addSubview:txtField1];
现在,每当您单击添加 UITextField 按钮时,将 y 的值增加您想要的额外空间,例如:
-(void)onTapAddTextFieldButton{
y= y + 40;
}