TableCell中的UITextView,如何为通用应用设置正确的宽度

时间:2011-03-10 18:55:12

标签: iphone ipad uitableview uitextview universal

我在tableView单元格中使用UITextView来编辑文本。

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {

UITextField *textName = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, 270, 24)];

[cell addSubview:textName];
[textName release];

}

这样可行,但在iPad上运行时则不正确。

我试图确定使用的细胞宽度 cell.contentView.frame.size.width

但iPhone和iPad的返回总是为320.0

同样在iPad上横向模式时,单元格的宽度是否应该更大?

张志贤

2 个答案:

答案 0 :(得分:2)

理想情况下,您需要创建自定义UITableViewCell并在layoutSubviews中调整控件尺寸/位置。

如果您要在tableView:cellForRowAtIndexPath:中添加控件,那么您可以从tableView本身获取宽度:

UITextField *textName = [[UITextField alloc] initWithFrame:CGRectMake(0, 0, tableView.frame.size.width-50, 24)];

答案 1 :(得分:1)

  1. 在您的函数返回后,iPad单元格在添加到表格时会调整大小。如果您希望文本字段随单元格调整大小,则可以执行textName.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight
  2. 之类的操作
  3. 您应该向contentView添加自定义视图(即[cell.contentView addSubview:textName])。除其他外,内容视图会自动缩小以处理编辑模式。
  4. 如果您只想调整布局,则对UITableViewCell进行子类化有点过分 - 我的印象是自动调整大小比使用layoutSubviews手动调整大小更快。