如何计算 UITextView 的边距大小?

发布于 2024-11-07 09:38:53 字数 631 浏览 0 评论 0 原文

我试图通过修剪光标后的所有文本来计算出文本视图到光标的大小,然后使用 NSString 的 sizeWithFont 方法,如下所示:

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

不幸的是,这永远不会返回完全正确的大小,可能是因为文本有边距,所以它的实际宽度小于 UITextView 的宽度(感谢这个问题来解决这个问题)。

因此,我需要计算出边距的大小,然后从 UITextView 的大小中减去边距的大小,以获得文本区域的实际大小。有谁知道该怎么做?

I am trying to work out the size of a size of a textView up to the cursor by trimming all the text after the cursor, and then using NSString's sizeWithFont method, like so:

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

Unfortunately, this never returns quite the right size, probably because the text has margins, so its actual width is less than UITextView's width (thanks to the answerers of this question for working that out).

So I need to work out the size of the margins, and subtract that from the UITextView's size to get the actual size of the text area. Does anyone know how to do that?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

可是我不能没有你 2024-11-14 09:38:54

我建议

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];

I'd suggest

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];
尤怨 2024-11-14 09:38:53

不幸的是,答案似乎是 UITextView 中没有边距 - 您只需通过在其后面放置一个视图来模拟边距,并使 UITextView 更窄。如果需要背景随文本滚动,可以监听scrollViewDidScroll:

Unfortunately it looks like the answer is that there is no margin in UITextView - you just have to simulate one by putting a view behind it, and making the UITextView narrower. If you need the background to scroll with the text, you can listen for scrollViewDidScroll:.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文