gpt4 book ai didi

ios - 确定 UILabel 可以接受的最大字符数

转载 作者:可可西里 更新时间:2023-11-01 04:38:47 25 4
gpt4 key购买 nike

给定一个 UILabel 和一个 NSString,我如何确定 UILabel 中可以容纳多少字符串?我正在使用 Xcode-5 和 iOS-7。

我一直在尝试查看可以从线程 Calculating UILabel Text Size 中提取的内容但我对那里的回应一无所获。

最佳答案

好吧,尽管可能还有另一种更有效(但不那么直接)的方法,但我在这里所做的是有效的。

我所做的只是计算文本所需的矩形的大小,看看它是否适合标签的框架,如果不适合,则砍掉一个字符并重试。

@interface LTViewController ()

@property (nonatomic, weak) IBOutlet UILabel *label1;
@property (nonatomic, weak) IBOutlet UILabel *label2;

@end

@implementation LTViewController

- (void)viewDidLoad
{
[super viewDidLoad];

UILabel *label1 = self.label1;
UILabel *label2 = self.label2;

UIFont *font = label1.font;
NSString *text = @"This is some text that will go into labels 1 and 2.";

CGRect label1Frame = label1.frame;

NSUInteger numberOfCharsInLabel1 = NSNotFound;

for (int i = [text length]; i >= 0; i--) {
NSString *substring = [text substringToIndex:i];
NSAttributedString *attributedText = [[NSAttributedString alloc] initWithString:substring
attributes:@{ NSFontAttributeName : font }];
CGSize size = CGSizeMake(label1Frame.size.width, CGFLOAT_MAX);
CGRect textFrame = [attributedText boundingRectWithSize:size
options:NSStringDrawingUsesLineFragmentOrigin
context:nil];

if (CGRectGetHeight(textFrame) <= CGRectGetHeight(label1Frame)) {
numberOfCharsInLabel1 = i;
break;
}
}

if (numberOfCharsInLabel1 == NSNotFound) {
// TODO: Handle this case.
}

label1.text = [text substringToIndex:numberOfCharsInLabel1];
label2.text = [text substringWithRange:NSMakeRange(numberOfCharsInLabel1, [text length] - numberOfCharsInLabel1)];
}

@end

这会产生:

screen shot

由您来处理错误情况。例如,其余部分并不完全适合 label2,它可能会更频繁地在单词中间切分。

关于ios - 确定 UILabel 可以接受的最大字符数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25193520/

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