使用UILabel搜索和自动滚动UIScrollview

时间:2015-06-03 00:47:06

标签: objective-c uiscrollview uilabel

我有一个带有UILabel的UIScrollView,里面填充了非英文文本。

我想在scrollview / UILabel中搜索单词/短语并自动滚动到该点。

我知道没有简单的方法可以做到这一点,因为UILabel没有功能。 我无法使用UITextView,因为出于某种原因,UITextView上的常规滚动非常不稳定,这会导致糟糕的用户体验(来自用户的评论)。 UIScrollView上的UILabel滚动非常流畅,但显然缺乏UITextView的功能。有任何想法吗?

1 个答案:

答案 0 :(得分:1)

我从Luke Rogers得到了回答SO question

的答案
- (CGRect)boundingRectForCharacterRange:(NSRange)range
{
    NSTextStorage *textStorage = [[NSTextStorage alloc] initWithAttributedString:[self attributedText]];
    NSLayoutManager *layoutManager = [[NSLayoutManager alloc] init];
    [textStorage addLayoutManager:layoutManager];
    NSTextContainer *textContainer = [[NSTextContainer alloc] initWithSize:[self bounds].size];
    textContainer.lineFragmentPadding = 0;
    [layoutManager addTextContainer:textContainer];

    NSRange glyphRange;

    // Convert the range for glyphs.
    [layoutManager characterRangeForGlyphRange:range actualGlyphRange:&glyphRange];

    return [layoutManager boundingRectForGlyphRange:glyphRange inTextContainer:textContainer];
}