UIScrollView
具有setContentOffset:animated:
允许您滚动到内容中特定点的方法。要确定适当的偏移量是多少,您必须确定属性字符串部分在突出显示部分之前的宽度。您可以在此处找到用于执行此操作的方法的文档。您可以size
使用NSAttributedString
.
它看起来像这样:
@interface SomeViewController : UIViewController
@end
@implementation SomeViewController {
UIScrollView* _scrollView;
}
- (void)scrollToOffset:(NSInteger)offset inAttributedString:(NSAttributedString*)attributedString {
NSAttributedString* attributedSubstring = [attributedString attributedSubstringFromRange:NSMakeRange(0, offset)];
CGFloat width = attributedSubstring.size.width;
[_scrollView setContentOffset:CGPointMake(width, 0.0f) animated:YES];
}
@end
上面的代码假设我们正在讨论单行文本并且水平滚动。或者,要对包含到任意高度的固定宽度执行此操作,您需要使用以下代码(而不是 attributesSubstring.size.height)计算高度,然后可能减去一点以说明想要显示最后一行的子字符串:
CGFloat height = [attributedSubstring boundingRectWithSize:CGSizeMake(<#fixed width to wrap at#>, HUGE_VALF) options:NSStringDrawingUsesLineFragmentOrigin context:nil].size.height;
[_scrollView setContentOffset:CGPointMake(0.0f, height) animated:YES];
这类似于我在确定具有我需要容纳的动态文本的表格或集合视图单元格的高度时使用的代码。