gpt4 book ai didi

iphone - 计算足够的文本以适应现有的 UILabel

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

我无法获得一些适用于我的 CoreText 文本换行代码;这太复杂了。我将尝试走另一条路线,即将我的 UILabel 一分为二。

我想要实现的是让我的文本看起来环绕我的固定大小的矩形图像。它始终是相同的尺寸。

因此,当图像旁边的 UILabel 完全填满时,它将在图像下方创建另一个 UILabel。

现在,我如何计算第一个 UILabel 中的文本并让它很好地适应 UILabel 的整个宽度,而不会太短或在末尾被截断?

最佳答案

好吧,这应该可以获取适合所需宽度的主字符串的子字符串:

//masterString is your long string that you're looking to break apart...
NSString *tempstring = masterString;

while (someLabel.bounds.size.width < [tempString sizeWithFont:someLabelLabel.font].width) {
NSMutableArray *tempArray = [NSMutableArray arrayWithArray:[tempString componentsSeparatedByString:@" "]];
//Remove the last object, which is the last word in the string...
[tempArray removeLastObject];

//Recreate the tempString with the last word removed by piecing the objects/words back together...
tempString = @"";
for (int i=0; i < tempArray.count - 1; i++) {
tempString = [tempString stringByAppendingFormat:@"%@ ", [tempArray objectAtIndex:i]];
}
//You must append the last object in tempArray without the space, or you will get an infinite loop...
tempString = [tempString stringByAppendingFormat:@"%@", [tempArray objectAtIndex:tempArray.count - 1]];
}
//Now do whatever you want with the tempString, which will fit in the width desired...

当然,这是假设您希望使用自动换行进行分隔。如果您不介意单词本身被分割(即字符换行)以完全占据所需的宽度,请改为这样做:

NSString *tempstring = masterString;

while (someLabel.bounds.size.width < [tempString sizeWithFont:someLabelLabel.font].width) {
tempString = [tempString substringToIndex:tempString.length - 1];
}
//Now do whatever you want with the tempString, which will fit in the width desired...

为了得到剩下的字符串,这样做:

NSString *restOfString = [masterString substringFromIndex:tempString.length];

希望这对您有所帮助。我不得不承认我还没有正确测试这段代码,尽管我过去做过类似的事情......

关于iphone - 计算足够的文本以适应现有的 UILabel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7318769/

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