在旧的角色扮演游戏中,对话文本会在屏幕上输入,如果页面上有更多内容,那么就是......并且你按下NEXT继续阅读。< / p>
我已经有很多这方面的工作了。我所坚持的是我需要一个文本块来编程地知道如何使用...来打破页面之间的自我...
通常情况下,简单的方法是在对话框中指定休息时间,但对于这个特定项目,我必须允许它接收大块文本,然后将其分成正确的大小页。
有人对如何做到这一点有任何想法吗?只计算字符不会起作用,因为字体不会是等宽的。
我有一段时间试图寻找这个。找到this,但它没有回答我的问题。
非常感谢!
答案 0 :(得分:1)
一种解决方案可能是:
你可以实现它,例如:
CGFloat w = 200.0; // RPG textbox width. Get it from actual UI object.
CGFloat h = 150.0; // RPG textbox height. Get it from actual UI object.
NSArray *words = [yourRPGtext componentsSeparatedByString:@" "];
NSString *cur_txt = [words objectAtIndex:0];
int i = 1;
RPG_txt_pages = [[NSMutableArray alloc] init];
while (i < [words count]) {
NSString *next_txt = [cur_txt stringByAppendingFormat:@" %@",[words objectAtIndex:i]];
CGSize size = [next_txt sizeWithFont:yourRPGtextlable.font
constrainedToSize:CGSizeMake(w, 99999)
lineBreakMode:UILineBreakModeWordWrap];
if (size.height > h) {
cur_txt = [cur_txt stringByAppendingString:@"..."];
[RPG_txt_pages addObject:cur_txt];
cur_txt = [words objectAtIndex:i];
} else {
cur_txt = next_txt;
}
i++;
}
[RPG_txt_pages addObject:curText];
这里的关键是NSString的sizeWithFont方法:here is the link to the docs.
IOS7评论:不推荐使用sizeWithFont,您可以使用sizeWithAttributes。 Here is an SO answer on this.
如果您告诉我使用的IOS版本,我将修改此答案。希望它有所帮助!