0

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

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

假设是:

  1. UITableView 已通过创建自定义单元格视图进行扩展 - 即在 NIB 中创建一个新视图,形成 UITableView 单元格的内容视图
  2. 每个自定义单元格都有四个 UILabel,它们形成 2 x 2 的 UILabel 图案 - 即顶行两个,底行两个
  3. 因此当用户增加字体时,UILabels 的水平间距将保持不变,但是标签高度会改变

所以我假设我所面临的挑战/问题将包括(并希望有人可以发布一些示例代码来回答)

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

希望这是有道理的。
谢谢

4

2 回答 2

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

要使 UILabel 的高度与您的目标字体匹配,请sizeWithFont使用NSString.

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

您可能会遇到的问题是,如果文本水平不适合您定义的边界。如果您希望字体相应缩小,请打开调整标志并像这样设置一个最小值。

myUILabel.minimumFontSize = 10;
myUILabel.adjustsFontSizeToFitWidth = YES;
于 2011-03-07T06:31:17.110 回答