iOS:如何在代码中的表格单元格中为文本字段添加约束

Posted

技术标签:

【中文标题】iOS:如何在代码中的表格单元格中为文本字段添加约束【英文标题】:iOS: How to add constraints for textfield in a table cell in code 【发布时间】:2014-01-10 10:09:56 【问题描述】:

我使用 Xcode5,ios SDK 7。

我在代码中的表格单元格中创建UITextField,而不是在情节提要中。我希望textField的宽度应该总是和单元格的宽度一样,但是不知道怎么实现的。

我知道我应该使用NSLayoutConstraint,但是我找不到教程,我尝试过我的方式,它们都无法工作....

谁能帮帮我?非常感谢!

代码的sn-p:

cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier: cellIdentifier];

UITextField *textField = [[UITextField alloc]initWithFrame: cell.contentView.frame];
[cell addSubview:textField];

【问题讨论】:

【参考方案1】:

感谢@Renish Dadhaniya 的回答,我想通了:

cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier: cellIdentifier];

UITextField *textField = [[UITextField alloc]initWithFrame: cell.contentView.frame];
[cell addSubview:textField];

[textField setTranslatesAutoresizingMaskIntoConstraints:NO];

NSLayoutConstraint *textLeftConstraint = [NSLayoutConstraint constraintWithItem: textField attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:cell.contentView attribute:NSLayoutAttributeLeading multiplier:1.0f constant:0.f];

NSLayoutConstraint *textRightConstraint = [NSLayoutConstraint constraintWithItem: textField attribute:NSLayoutAttributeTrailing relatedBy:NSLayoutRelationEqual toItem:cell.contentView attribute:NSLayoutAttributeTrailing multiplier:1.0f constant:0.f];

[cell addConstraint:textLeftConstraint];
[cell addConstraint:textRightConstraint];

效果很好!!

【讨论】:

【参考方案2】:

下面的自动布局链接。

1. Auto layout in iOS6 adding constraints through code2. iOS auto layouts3. Auto layout for iOS revisited4. Beginning auto layout tutorial in iOS7

【讨论】:

以上是关于iOS:如何在代码中的表格单元格中为文本字段添加约束的主要内容,如果未能解决你的问题,请参考以下文章

将文本字段数据保存在 xcode 中的可扩展表格单元格中

iOS:如何从 tableview 的自定义单元格中的 UITextField 访问值

如何在表格视图单元格中添加 12 个文本字段并通过其标记值访问每个文本字段的文本?

iOS7上tableview单元格中的文本字段崩溃

移动到表格单元格中的下一个文本字段

如何区分自定义单元格中的两个文本字段?