我无法获得一些为我工作的CoreText文本包装代码;它太复杂了。我将尝试去另一条路线,即将我的UILabel分成两部分。
我想要实现的是让我的文字看起来环绕我固定尺寸的矩形图像。它总是具有相同的尺寸。
因此,当图像旁边的UILabel完全填满时,它会在图像下方创建另一个UILabel。
现在,我如何计算第一个UILabel中的文本,并使其在UILabel的整个宽度上很好地适应,而不是太短或最后切断?
答案 0 :(得分:1)
嗯,这应该可以使主字符串的子字符串适合所需的宽度:
//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];
希望这会有所帮助。我不得不承认我还没有正确测试这段代码,虽然我过去做过类似的事情......
答案 1 :(得分:0)
尝试以下链接,它会帮助你。
如果您想在标签中的某些自定义文字上创建“链接”,而不是使用@Fabian Kreiser建议的WebView,您可以使用我的OHAttributedLabel类(you can find it this link)
请参阅我的github存储库中提供的示例代码:您可以使用我的addCustomLink:inRange:
方法将链接(带有自定义URL)添加到一系列文本中(您可以通过迭代每次出现的文本来确定该范围)你的文字中的“iPhone”这个词很容易)。然后在OHAttributedLabel
上的委托方法中,您可以捕获链接被点击并相应地采取行动以执行您需要的任何操作。