Fonts 带有CCLabelTTF的OTF字体
我正在尝试使用带有CCLabelTTF的.otf字体 它不起作用。所述字体与本机UILabel配合良好。有解决办法吗?将UILabel渲染为CCSprite ish?正在将OTF转换为TTF。。。好像太麻烦了Fonts 带有CCLabelTTF的OTF字体,fonts,cocos2d-iphone,opentype,Fonts,Cocos2d Iphone,Opentype,我正在尝试使用带有CCLabelTTF的.otf字体 它不起作用。所述字体与本机UILabel配合良好。有解决办法吗?将UILabel渲染为CCSprite ish?正在将OTF转换为TTF。。。好像太麻烦了 编辑。这是我写的。我认为它有效。我会看看进展如何 编辑2。最酷的是,如果使用颜色UIColor.whiteColor创建标签,则可以使用mylabel.color=ccc3(0,0,0)设置颜色使其变为黑色或任何其他颜色。然后,您可以使用CCTintTo等对文本自由着色 Spriteu
- 编辑。这是我写的。我认为它有效。我会看看进展如何
- 编辑2。最酷的是,如果使用颜色
创建标签,则可以使用UIColor.whiteColor
mylabel.color=ccc3(0,0,0)设置颜色代码>使其变为黑色或任何其他颜色。然后,您可以使用
等对文本自由着色CCTintTo
#import "CCSprite.h"
@interface Spriteuifont : CCSprite
+(Spriteuifont*)spriteuifontWithText:(NSString*)text font:(UIFont*)font color:(UIColor*)color;
@property (nonatomic, retain) NSString* string;
@end
Spriteuifont.m:
#import "Spriteuifont.h"
#import "UIView+additions.h"
@interface Spriteuifont ()
@property (nonatomic, retain) NSString* _string;
@property (nonatomic, retain) UIFont* _font;
@property (nonatomic, retain) UIColor* _color;
@end
@implementation Spriteuifont
@synthesize _string, _font, _color; // retain
-(void)dealloc {
self._string = nil;
self._font = nil;
self._color = nil;
[super dealloc];
}
+(Spriteuifont*)spriteuifontWithText:(NSString*)text font:(UIFont*)font color:(UIColor*)color {
Spriteuifont* s = [[[self alloc] initWithText:text font:font color:color] autorelease];
return s;
}
-(id)initWithText:(NSString*)text font:(UIFont*)font color:(UIColor*)color {
self = [super init];
if (self) {
self._font = font;
self._color = color;
self.string = text;
}
return self;
}
-(void)refresh {
const CGSize SIZE = [self._string sizeWithFont:self._font];
UILabel* labelTestfont = [[[UILabel alloc] initWithFrame:CGRectMake(0, 0, SIZE.width, SIZE.height)] autorelease];
labelTestfont.font = self._font;
labelTestfont.backgroundColor = UIColor.clearColor;
labelTestfont.opaque = NO;
labelTestfont.text = self._string;
labelTestfont.textColor = self._color;
UIImage* img = [labelTestfont image];
// GL_ONE or GL_ONE_MINUS_SRC_ALPHA ?
CCTexture2D* aa = [[[CCTexture2D alloc] initWithCGImage:img.CGImage resolutionType:GL_ONE] autorelease];
[self setTexture:aa];
[self setTextureRect:labelTestfont.frame];
}
-(void)setString:(NSString *)string {
self._string = string;
[self refresh];
}
-(NSString*)string {
return self._string;
}
@end
用法:
Spriteuifont* label = [Spriteuifont spriteuifontWithText:@"0" font:[UIFont fontWithName:@"myfontwhatever" size:16] color:UIColor.blackColor];
顺便说一句,UIView category.m文件包含以下内容:
#import <QuartzCore/QuartzCore.h>
@implementation UIView (additions)
-(UIImage*)image {
UIGraphicsBeginImageContextWithOptions(self.bounds.size, self.opaque, 0.0);
[self.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage* img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return img;
}
@end
#导入
@实施视图(添加)
-(UIImage*)图像{
UIGraphicsBeginImageContextWithOptions(self.bounds.size,self.不透明,0.0);
[self.layer renderContext:UIGraphicsGetCurrentContext()];
UIImage*img=UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsSendImageContext();
返回img;
}
@结束
目前Cocos2d iphone不支持OTF字体。我现在只使用本机iOS支持,通过CCTexture2D呈现内容,如问题中所述。也许性能不好,但对我来说,这并不重要。顾名思义,ccabelttf只支持ttf fontsNowotf
支持存在