当我更改字体时,UITableViewCell textLabel不是垂直对齐的

时间:2013-07-16 14:27:34

标签: ios uitableview autolayout

我的应用程序中有表格视图。它位于故事板内部,并配置为具有原型单元格。首先我使用UITableViewCell的textLabel属性设置文本,并在tableView中更改了它的字体:cellForRowAtIndexPath:,

cell.textLabel.font = [UIFont fontWithName:@"Calibre-Light" size:18];

当我更改字体时,文本已经不是垂直居中的,请查看截图。 enter image description here enter image description here

第一张图片是自定义字体,第二张图片是默认字体。

我尝试在原型单元格中创建标签并定义约束以使其垂直居中对齐。

enter image description here

但这也没有帮助,结果与第一个截图相同。为什么我会遇到这种行为?

感谢您的回答!

3 个答案:

答案 0 :(得分:1)

经过几天的折磨,我终于找到了解决方法。 首先,让我不要,我使用的字体是问题的根源。当你垂直对齐时,它不会对齐,可能是因为底部有一些边距,所以解决问题的唯一方法就是手动将标签放在视图中,这样得到的位置就会导致UILabel UITableViewCell里面出现垂直对齐。但我再一次试图在Interface Builder中手动降低标签但是再次没有成功。下面是右下角的界面构建器原型单元格的图像以及在背景中定位的结果

enter image description here

请注意,标签尚未移动,但已从顶部裁剪。又沮丧......为什么不动呢???如果我在界面构建器中手动定位它。最后我只是觉得可能是标签尺寸不正确?所以在tableView中:cellForRowAtIndexPath:我刚刚调用[textLabel sizeToFit],一切正常。

因此,作为结论,请注意有时自定义字体可能不是您想要的方式,因为它们的内部实现。

答案 1 :(得分:1)

以下是修复自定义字体的链接

http://www.andyyardley.com/2012/04/24/custom-ios-fonts-and-how-to-fix-the-vertical-position-problem/

变更摘要

  • 下载Apple字体工具套件
  • 终端:ftxdumperfuser -t hhea -A d font.ttf
  • 在目录
  • 中创建的XML文件
  • 使用文本编辑器打开XML并调整ascender,descender
  • 的设置
  • 终端:ftxdumperfuser -t hhea -A f font.ttf
  • 为您的项目添加自定义字体(不要忘记plist项目)

答案 2 :(得分:0)

您是否尝试将标签从cell.contentView的顶部边缘拉伸到底边?这是非自定义单元格的默认值。根据我的经验,这一直是按预期工作的。