因为策划需要修改文字面板上的行间距,看了一阵CCLabelTTF想不出怎么改,于是上网各种找,终于在stackoverflow上找到了前辈们的解决办法。特摘录如下:
问:
Is there anyway in ios app to adjust the linespacing between the multiple lines in CCLabelTTF in cocos2d?
答:
"homemade" solution
#import <Foundation/Foundation.h>
#import "cocos2d.h"
@interface CCLabelTTFLineSpaced : CCLayer {
}
+ (id) labelWithString:(NSString*)string dimensions:(CGSize)dimensions hAlignment: (CCTextAlignment)alignment fontName:(NSString*)name fontSize:(CGFloat)size lineSpace:(CGFloat)space;
- (id) initWithString:(NSString*)str dimensions:(CGSize)dimensions hAlignment:(CCTextAlignment)alignment fontName:(NSString*)name fontSize:(CGFloat)size lineSpace:(CGFloat)space;
@end
@implementation CCLabelTTF(Extension)
+ (id)labelWithString:(NSString *)string dimensions:(CGSize)dimensions hAlignment:(CCTextAlignment)alignment fontName:(NSString *)name fontSize:(CGFloat)size lineSpace:(CGFloat)space{
return [[[self alloc] initWithString:string dimensions:dimensions hAlignment:alignment fontName:name fontSize:size lineSpace:space] autorelease];
}
- (id)initWithString:(NSString *)string dimensions:(CGSize)dimensions hAlignment:(CCTextAlignment)alignment fontName:(NSString *)name fontSize:(CGFloat)size lineSpace:(CGFloat)space
{
if (self = [super init]) {
anchorPoint_ = ccp(0.5f, 0.5f);
[self setContentSize:dimensions];
int pos = 0;
int ii = 0;
while (pos < [string length]) {
int end = 0;
int lastCut = -1;
bool finished = NO;
while (finished == NO) {
CGSize actualSize = [[string substringWithRange:NSMakeRange(pos, end)] sizeWithFont:[UIFont fontWithName:name size:size]];
if (actualSize.width > dimensions.width || pos+end == [string length]) {
if (pos+end == [string length] && actualSize.width <= dimensions.width) {
lastCut = end;
}
finished = YES;
}else {
if ([[string substringWithRange:NSMakeRange(pos+end, 1)] isEqualToString:@" "] ||
[[string substringWithRange:NSMakeRange(pos+end, 1)] isEqualToString:@"."] ||
[[string substringWithRange:NSMakeRange(pos+end, 1)] isEqualToString:@""]) {
lastCut = end;
}
end++;
}
}
NSString *strLine = [string substringWithRange:NSMakeRange(pos, lastCut)];
CCLabelTTF *line = [CCLabelTTF labelWithString:strLine dimensions:CGSizeMake(dimensions.width, size*2) hAlignment:alignment fontName:name fontSize:size];
[line setAnchorPoint:ccp(0, 0)];
[line setPosition:ccp(0, -ii*(space+size))];
[self addChild:line];
pos = pos + lastCut;
ii++;
}
}
return self;
}
@end
原地址:http://stackoverflow.com/questions/7856833/line-spacing-in-cclabelttf
分享到:
相关推荐
C# RichTextbox设置行间距
我要的是增大行间距。 二、解决方法: // // imageList1 // this.imageList1.ImageSize = new System.Drawing.Size(2, 30); this.imageList1.TransparentColor = System.Drawing.Color.Transparent; this....
生成pdf的中文问题解决办法、导出pdf时,设置段落行间距方法,表单填充,使用itext方法填充相应表单域。
通过html的css实现段间距设置,行间距是用QTextBlockFormat QTextBlock等配合设置。
根据要显示字体的多少,行间距,字间距的调整,计算出lable总的高度的方法,此demo简单易懂
易语言设置超级列表框行间距模块源码,设置超级列表框行间距模块,设置超级列表框行间距,取祖宗句柄,WndProc,句柄是否存在,取位置,SendMessage,SendMessageWINDOWPOS,SetWindowLong,CallWindowProc,GetWindowLong,...
ckeditor 行间距插件
实例用的VS2010编写的,简单易懂,直接调用方法。再不懂就要自己找原因了。
ckeditor行间距插件包,解决ckeditor没有行间距的问题
一个控件库,里面包含了一个可以调节行间距、并设置是否首行缩进的自定义控件。
ckeditor设置行间距资源包 1.下载ckeditor的行距插件包 lineheight 2.解压到ckeditor/plugins目录下 3.修改ckeditor目录下的 config.js文件
RichTextbox“行间距”,感觉设置行间距更具体,不会因为字号的变化而受到影响,具体代码参看压缩包,vs2015编写。
tinyMCE 富文本编辑器 line-height 行高插件。 tinyMCE富文本编辑器line-height行高插件,下载后放在tinyMCE插件的plugins文件夹中,之后初始化中引入plugins,即可在toolbar中展示 tinyMCE line-height 行高插件
资源介绍:。易语言设置超级列表框行间距模块源码例程程序调用API函数实现超级列表框行间距的设置。易语言设置超级列表框行间距模块源码是易语言API应用例程。资源作者:。资源界面:。资源下载:。
论文标准格式,标题大小,一级目录大小,二级目录大小,三级目录大小,行间距。
基于行间距编码的文本数字水印算法,梁旭,远志永,本文利用Java技术实现了一种保护电子文档的基于行间距编码的文本水印算法。描述了水印的编码方式、水印嵌入的算法、水印提取的算��
word2021中怎么调整行间距.docx