gpt4 book ai didi

ios - 使用给定的字符串查找具有恒定宽度和高度的 UITextView 中适合的字符数?

转载 作者:IT王子 更新时间:2023-10-29 05:49:24 25 4
gpt4 key购买 nike

在我的应用程序中,如果文本输入很大,我需要在 TextView 中设置 Read more。所以我的方法是找到适合 TextView 的字符串范围,并将 See More 附加到它。有什么办法吗在 Swift 中实现它。要求是模拟阅读更多选项,以像 facebook 一样在详细 View 中显示完整文本。

最佳答案

您要找的函数是CTFramesetterSuggestFrameSizeWithConstraints .本质上,它允许您找出适合特定框架的字符数。您可以使用该数字截断当前文本并插入一个按钮。

我为 UILabel 的子类编写了此函数的实现:

- (NSInteger)numberOfCharactersThatFitLabel {

// Create an 'CTFramesetterRef' from an attributed string
CTFontRef fontRef = CTFontCreateWithName((CFStringRef)self.font.fontName, self.font.pointSize, NULL);
NSDictionary *attributes = [NSDictionary dictionaryWithObject:(__bridge id)fontRef forKey:(id)kCTFontAttributeName];
CFRelease(fontRef);
NSAttributedString *attributedString = [[NSAttributedString alloc] initWithString:self.text attributes:attributes];
CTFramesetterRef frameSetterRef = CTFramesetterCreateWithAttributedString((CFAttributedStringRef)attributedString);

// Get a suggested character count that would fit the attributed string
CFRange characterFitRange;
CTFramesetterSuggestFrameSizeWithConstraints(frameSetterRef, CFRangeMake(0,0), NULL, CGSizeMake(self.bounds.size.width, self.numberOfLines*self.font.lineHeight), &characterFitRange);
CFRelease(frameSetterRef);
return (NSInteger)characterFitRange.length;
}

Here's a bog post用于将随机文本截断到指定行数并向其附加“查看更多”文本的完整实现。

关于ios - 使用给定的字符串查找具有恒定宽度和高度的 UITextView 中适合的字符数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28083224/

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