gpt4 book ai didi

iphone - 确定使用 NSString draw/size 方法绘制什么子字符串

转载 作者:行者123 更新时间:2023-12-03 20:08:21 24 4
gpt4 key购买 nike

是否有任何方法可以确定在给定空间中可以渲染多少 NSString?

我知道所有 NSString sizeWithFont 方法(例如 sizeWithFont:constrainedToSize:lineBreakMode:)。如果字符串太长而无法容纳,这些不会告诉您字符串的哪一部分能够被渲染。

例如,如果我有

NSString *testString = @"The brown dog";

我打电话:

[testString sizeWithFont:[UIFont systemFontOfSize:17] constrainedtoSize:CGSizeMake(20, 20) lineBreakMode:UILineBreakModeWordWrap];

我可能会返回 CGSize = {20,20}。这告诉我绳子至少占据了整个尺寸,但它并没有告诉我它是否已经结束,或者能够容纳多少。如果只有“棕色”能够适合,我想知道这一点。

也许有一些核心基础方法可以做到这一点?

最佳答案

判断是否要截断的一种方法是在约束矩形中提供非常大的高度。如果返回的高度高于标签的高度,您就知道它将被截断。像这样的事情:

    // myLabel is a UILabel*
CGSize labelSize = myLabel.frame.size;
labelSize.height = 9999;
CGSize newSize = [newLabel sizeWithFont:[UIFont systemFontOfSize:17.0]
constrainedToSize:labelSize
lineBreakMode:UILineBreakModeWordWrap];
if( newSize.height > labelSize.height ) {
// Whoops, too big!
}

这会告诉你它是否会被截断,但它不会告诉你它会被截断多少。我能想到的唯一方法是循环执行此操作,每次从末尾删除一个单词,直到它适合为止。

关于iphone - 确定使用 NSString draw/size 方法绘制什么子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6920120/

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