自动uiLabel&的iphone代码uiTableViewCell在字体改变时调整大小?

时间:2011-03-07 05:08:41

标签: iphone ios uitableview autosize

有人可以总结一下有助于解决这个问题的Objective-c代码的关键部分。

目标 - 在用户更改字体大小后自动调整UITableView。因此,如果用户增加或减少字体,则(a)uiLabel高度应该改变以确保它们很好地包括文本,并且(b)uiTableViewCell高度也应该调整。

假设是:

  1. UITableView已通过扩展 创建自定义单元格视图 - 即在NIB中创建一个新视图 内容视图的表单 UITableView单元格
  2. 每个习俗 细胞有四个UILabel形成一个 2 x 2模式的UILabels - 即两个 在顶线和两个在底线
  3. 以便用户增加字体 水平间距 UILabels会保持不变, 但标签高度会 改变
  4. 所以我假设我所遇到的挑战/问题(并希望通过一些人可以发布的示例代码来回答)

    1. 这里的起点是InterfaceBuilder中已经布局的自定义UITableViewCell吗? (或解决方案是否要求它完全以编程方式构建)?
    2. 如何计算标签的高度?这只是使用NSString方法“sizeWithFont:minFontSize:actualFontSize:forWidth:lineBreakMode:”,我是否需要为边距添加添加等?
    3. 如何以编程方式动态增加标签的高度 - 您使用哪种方法执行此操作&如何改变高度本身
    4. 如何确保当顶部的UILabel扩展时&增长,它会自动推下第二排的UILabel?这是默认情况下发生的还是您需要特定的属性/设置来确保这种情况。
    5. 如何在发生上述情况后自动增加TableViewcell的高度。使用哪种方法,以及如何通过编程方式执行增加&重绘。
    6. 希望这是有道理的 感谢

2 个答案:

答案 0 :(得分:2)

  1. 您可以将XIB文件作为默认布局,然后在运行时调整位置/大小。
  2. 是使用该方法计算所需的高度。您需要自己在标签之间添加边距。
  3. 更改标签的框架。
  4. 您需要根据第一行标签+边距的x,y,高度计算第二行标签的x,y。
  5. 使用以下方法挂钩并返回新高度:
    • (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

答案 1 :(得分:2)

要使UILabel的高度与目标字体相匹配,请使用sizeWithFont的{​​{1}}函数。

NSString

您可能遇到的问题是文本是否在您定义的范围内不适合水平放置。如果您希望字体相应缩小,请打开调整标记并设置这样的分钟。

NSString *myText = @"Go Hokies";
UIFont *myFont = [UIFont boldSystemFontOfSize:15];
CGFloat lineHeight = [myText sizeWithFont:myFont].height;