[Cocos2d][IOS]:cclabelttf显示在顶部垂直对齐中,而不是中心垂直对齐64位

[Cocos2d][IOS]:cclabelttf显示在顶部垂直对齐中,而不是中心垂直对齐64位,ios,cocos2d-iphone,Ios,Cocos2d Iphone,我使用cclabelttf标签在标准sprite图像中显示文本。 它在视网膜和非视网膜上都能很好地工作,但文本的最后一行有时会被截断 64位iPad air 这是我使用的代码 [CCLabelTTF labelWithString:text fontName:_font fontSize:_fontSize dimensions:dimensions hAlignment:kCCTextAlignmentCenter vAlignment:kCCVerticalTextAlignmentCent

我使用cclabelttf标签在标准sprite图像中显示文本。 它在视网膜和非视网膜上都能很好地工作,但文本的最后一行有时会被截断 64位iPad air

这是我使用的代码

[CCLabelTTF labelWithString:text fontName:_font fontSize:_fontSize dimensions:dimensions hAlignment:kCCTextAlignmentCenter vAlignment:kCCVerticalTextAlignmentCenter lineBreakMode:kCCLineBreakModeWordWrap];
但当我将文本更改为垂直对齐顶部时,它又开始工作了

[CCLabelTTF labelWithString:text fontName:_font fontSize:_fontSize dimensions:dimensions hAlignment:kCCTextAlignmentCenter vAlignment:kCCVerticalTextAlignmentTop lineBreakMode:kCCLineBreakModeWordWrap];
知道发生了什么吗?我真的希望文本的中心垂直对齐。
有什么解决方案可以做到这一点吗?

我解决这个问题的方式与本文中讨论的cocos2dx版本问题类似。必须使用ceilf()将CGSize组件四舍五入

打开CCTexture2d.m,找到这个方法

- (id) initWithString:(NSString*)string fontName:(NSString*)name fontSize:(CGFloat)size
并添加以下代码

dim.width = ceilf(dim.width);
dim.height = ceilf(dim.height);
紧接着

dim = [string sizeWithFont:font
             constrainedToSize:boundingSize
                 lineBreakMode:NSLineBreakByWordWrapping];

v2.x?您正在构建arm64切片吗?如果是,请不要这样做,cocos2dv2.x不兼容64位。在任何情况下,请确保所有32-64位转换警告都已打开,并对其进行彻底检查。是的,我正在使用cocos2d(2.1)。我正在构建arm64切片。我认为苹果公司必须为64位版本的应用程序进行优化。我正在使用cocoapods来包含cocos2d,最新版本自动具有包含ARM64的pod体系结构。此外,我还在多行渲染中使用换行符OK,因此我不得不最终将我的应用程序制作为32位。另一个选择可能是,