将iOS应用程序转换为Arm64后,为什么文本呈现不正确?

时间:2014-06-15 18:48:48

标签: ios objective-c text-rendering arm64

我有一个iOS应用程序,我转换为支持Arm64。我的初始转换步骤是:

1)将目标架构$(ARCHS_STANDARD_32_BIT)更改为$(ARCHS_STANDARD)

2)修复枚举定义:

// before
typedef enum {
    MyEnumValue1,
    MyEnumValue2
} MyEnum;

// after
typedef NS_ENUM(NSUInteger, MyEnum) {
    MyEnumValue1,
    MyEnumValue2
}

3)修复stringWithFormat中的错误类型:

// before
[NSString stringWithFormat:@"The value is %d", someValue];

// after
[NSString stringWithFormat:@"The value is %lu", someValue];

这就是它。我遇到的问题是,在某些视图中,文本现在呈现不正确。渲染文本的视图周围的代码都没有改变,我没有做任何自定义文本绘制。在下面的示例图片中,文本由UIButton呈现。

转换为Arm64之前UIButton呈现的文字

Before conversion to Arm64

转换为Arm64后由UIButton呈现的文字

After conversion to Arm64

我可以在转换后转换为提交之前来回提交,然后重现它。我仔细扫描了差异,没有看到任何明显的影响因素。

问题

  1. 可能导致这种情况的原因是什么?
  2. 有关如何调试此内容和/或查找内容的任何想法?
  3. 更好的是,有人知道为什么会这样吗?

1 个答案:

答案 0 :(得分:0)

我终于开始创建一个展示此行为的示例应用。在这个过程中,我发现了问题。我的一个自定义UITableViewCell类用作应用程序中许多单元格类型的超类。此单元格的cell.layer.shouldRasterize设置为YES。虽然这似乎在32位版本的应用程序中运行良好,但它在ARM64版本中引起了问题。在任何情况下,由于细胞渲染性能受到不利影响,这也可能是错误的。这些单元格在各个边缘都有阴影效果,这就是我开始设置shouldRasterize的原因。

这里的任何人都无法使用示例应用程序来帮助我,所以我很感激任何人花在调查上。如果我没弄明白,我会发布示例应用程序。