如何根据目标c中的内容设置UITextView的高度

发布于 2024-12-04 08:15:51 字数 89 浏览 1 评论 0原文

我有一个 UITextView 并希望根据其内容更改设置其高度。

我怎样才能获得内容的高度。

请指导我。

提前致谢。

I have a UITextView and want to set its height as per its content changes.

How can I get height of the content.

Please guide me.

Thanks in advance.

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

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

发布评论

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

评论(5

姜生凉生 2024-12-11 08:15:51

如果您想计算某些文本的 UITextView 高度,则可以使用以下方法:

CGSize textViewSize = [text sizeWithFont:[UIFont fontWithName:@"Marker Felt" size:20] 
                       constrainedToSize:CGSizeMake(WIDHT_OF_VIEW, FLT_MAX) 
                       lineBreakMode:UILineBreakModeTailTruncation];

fontWithName 中定义您在 UITextView 中使用的字体,在 size 参数中 - UITextView 中文本的大小。替换 UITextViewWIDHT_OF_VIEW width 宽度。

textViewSize.height 将包含 UITextField 在不滚动的情况下显示文本的高度

If you want to calculate height of your UITextView for some text then you can use such method:

CGSize textViewSize = [text sizeWithFont:[UIFont fontWithName:@"Marker Felt" size:20] 
                       constrainedToSize:CGSizeMake(WIDHT_OF_VIEW, FLT_MAX) 
                       lineBreakMode:UILineBreakModeTailTruncation];

In fontWithName define font that you are using in UITextView, in size parameter - size of your text in UITextView. Replace WIDHT_OF_VIEW width width of your UITextView.

textViewSize.height will contain height that UITextField to display text without scrolling

不知所踪 2024-12-11 08:15:51
-(void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    CGRect frame = _textView.frame;
    frame.size.height = _textView.contentSize.height;
    _textView.frame = frame;
}
-(void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    CGRect frame = _textView.frame;
    frame.size.height = _textView.contentSize.height;
    _textView.frame = frame;
}
稳稳的幸福 2024-12-11 08:15:51

您可以使用 UIStringDrawing 类别中的方法计算文本的大小:

CGSize textSize = [textView.text sizeWithFont:font 
                                 forWidth:textWidth 
                                 lineBreakMode: UILineBreakModeWordWrap];

You can calculate the size of the text with the method from UIStringDrawing category:

CGSize textSize = [textView.text sizeWithFont:font 
                                 forWidth:textWidth 
                                 lineBreakMode: UILineBreakModeWordWrap];
寂寞陪衬 2024-12-11 08:15:51
CGSize countentSize = textView.contentSize;
int numberOfLinesNeeded = countentSize.height / textView.font.lineHeight;
int numberOfLinesInTextView = textView.frame.size.height / textView.font.lineHeight;
CGRect textViewFrame= textView.frame;
textViewFrame.size.height = numberOfLinesNeeded * textView.font.lineHeight;
[textView setFrame:textViewFrame];
CGSize countentSize = textView.contentSize;
int numberOfLinesNeeded = countentSize.height / textView.font.lineHeight;
int numberOfLinesInTextView = textView.frame.size.height / textView.font.lineHeight;
CGRect textViewFrame= textView.frame;
textViewFrame.size.height = numberOfLinesNeeded * textView.font.lineHeight;
[textView setFrame:textViewFrame];
吖咩 2024-12-11 08:15:51

sizeWithFont 已弃用。

CGRect rect = [textView.text boundingRectWithSize:CGSizeMake(textView.frame.size.width, CGFLOAT_MAX)
                                                                    options:NSStringDrawingUsesLineFragmentOrigin
                                                                    attributes:@{NSFontAttributeName: textView.font}
                                                                    context:nil];
        rect.size.width = ceil(rect.size.width);
        rect.size.height = ceil(rect.size.height);

我希望它能帮助某人。快乐编码。

sizeWithFont is deprecated .

CGRect rect = [textView.text boundingRectWithSize:CGSizeMake(textView.frame.size.width, CGFLOAT_MAX)
                                                                    options:NSStringDrawingUsesLineFragmentOrigin
                                                                    attributes:@{NSFontAttributeName: textView.font}
                                                                    context:nil];
        rect.size.width = ceil(rect.size.width);
        rect.size.height = ceil(rect.size.height);

I hope it will help someone. Happy coding.

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