gpt4 book ai didi

ios - 旧的 RPG 滚动文本,但用(点点点)分解文本 block

转载 作者:行者123 更新时间:2023-11-29 02:57:55 26 4
gpt4 key购买 nike

在旧的 RPG 中,对话文本会在屏幕上输入,如果页面无法容纳更多内容,则会出现一个...,您可以按 NEXT 继续阅读。

我已经完成了很多工作。我所坚持的是我需要一个文本 block 以编程方式知道如何使用...将其从一个页面分解到另一个页面。

通常,简单的方法是在对话中指定中断的位置,但对于这个特定项目,我必须让它接受一大块文本,然后将其分成正确的大小页。

有人对如何做到这一点有任何想法吗?仅计算字符数是行不通的,因为字体不是等宽的。

我费了好大劲才找到这个。找到this ,但它没有回答我的问题。

非常感谢!

最佳答案

一个解决方案可能是:

  1. 将大文本中的所有单词分离成一个数组
  2. 检查它并根据文本框高度搜索边界

你可以实现它,例如:

        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 版本,我会修改此答案。希望对您有所帮助!

关于ios - 旧的 RPG 滚动文本,但用(点点点)分解文本 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23670962/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com