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

前端之家收集整理的这篇文章主要介绍了ios – 使用给定字符串查找具有恒定宽度和高度的UITextView中的字符数?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在我的应用程序中,如果文本输入很大,我需要在文本视图中设置Read more.所以我的方法是找到适合文本视图的字符串范围并附加查看更多信息.有没有办法实现它在 Swift中.要求是模拟阅读更多选项以在详细视图中显示完整文本,如facebook.

解决方法

您正在寻找的功能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用于完全实现将随机文本剪切为指定行数并向其添加“查看更多”文本.

原文链接:https://www.f2er.com/iOS/334643.html

猜你在找的iOS相关文章