2011-05-13 83 views
0

我试图通过修剪所有文本光标后,再使用的NSString的sizeWithFont方法,像这样制定出一个尺寸一个TextView的规模高达光标:不幸的是如何计算UITextView的边距大小?

NSString *string = [myTextView.text substringToIndex:myTextView.selectedRange.location];   
    CGSize size = [string sizeWithFont:myTextView.font constrainedToSize:myTextView.frame.size lineBreakMode:UILineBreakModeWordWrap]; 

,这永远不会返回相当大的尺寸,可能是因为文本有边距,所以它的实际宽度小于UITextView的宽度(感谢this question的回答者为此付出了努力)。

所以我需要计算出边距的大小,并从UITextView的大小中减去该大小以获得文本区域的实际大小。有谁知道这是怎么做到的吗?

回答

2

不幸的是,它看起来像答案是,有在UITextView中没有保证金 - 你只需要通过将视图后面,并使UITextView的窄模拟之一。如果您需要使用背景滚动文字,您可以听取scrollViewDidScroll:

+0

对于scrollview指标问题,这个答案可能会有所帮助。 http://stackoverflow.com/questions/4343390/is-there-a-way-to-put-uitextviews-scroll-indicator-to-outside-uitextview – 2012-03-19 08:16:46

1

我建议

CGSize tSize = myTextView.frame.size; 
tSize.width -= 2 * myTextView.contentInset.left; 
tSize.height -= 2 * myTextView.contentInset.top; 
CGSize size = [string sizeWithFont:myTextView.font constrainedToSize:tSize lineBreakMode:UILineBreakModeWordWrap]; 
+0

我不在我的电脑,但我很确定我试图删除contentInset没有成功 - 然后使用NSLog的contentInset值为零。看起来他们正在使用其他东西来创建边距。不过,我会验证并回报。 – 2011-05-14 11:22:43

+2

是的,确认我很害怕 - 一个UITextView的contentInset值为零。 – 2011-05-14 11:34:15