我有一个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
呈现。
UIButton
呈现的文字
UIButton
呈现的文字
我可以在转换后转换为提交之前来回提交,然后重现它。我仔细扫描了差异,没有看到任何明显的影响因素。
答案 0 :(得分:0)
我终于开始创建一个展示此行为的示例应用。在这个过程中,我发现了问题。我的一个自定义UITableViewCell
类用作应用程序中许多单元格类型的超类。此单元格的cell.layer.shouldRasterize
设置为YES。虽然这似乎在32位版本的应用程序中运行良好,但它在ARM64版本中引起了问题。在任何情况下,由于细胞渲染性能受到不利影响,这也可能是错误的。这些单元格在各个边缘都有阴影效果,这就是我开始设置shouldRasterize
的原因。
这里的任何人都无法使用示例应用程序来帮助我,所以我很感激任何人花在调查上。如果我没弄明白,我会发布示例应用程序。