Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 如何在objective c中根据UITextView的内容设置其高度_Iphone_Objective C_Text_Height_Uitextview - Fatal编程技术网

Iphone 如何在objective c中根据UITextView的内容设置其高度

Iphone 如何在objective c中根据UITextView的内容设置其高度,iphone,objective-c,text,height,uitextview,Iphone,Objective C,Text,Height,Uitextview,我有一个UITextView,想根据内容的变化设置它的高度 如何获得内容的高度 请引导我 提前感谢。如果要计算某些文本的UITextView高度,可以使用以下方法: CGSize textViewSize = [text sizeWithFont:[UIFont fontWithName:@"Marker Felt" size:20] constrainedToSize:CGSizeMake(WIDHT_OF_VIEW, FLT_MAX)

我有一个
UITextView
,想根据内容的变化设置它的高度

如何获得内容的高度

请引导我


提前感谢。

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

CGSize textViewSize = [text sizeWithFont:[UIFont fontWithName:@"Marker Felt" size:20] 
                       constrainedToSize:CGSizeMake(WIDHT_OF_VIEW, FLT_MAX) 
                       lineBreakMode:UILineBreakModeTailTruncation];
fontWithName
中,定义您在
UITextView
中使用的字体,在size参数中定义您在
UITextView
中的文本大小。替换视图的宽度UITextView的宽度

textViewSize.height
将包含
UITextField
显示文本而不滚动的高度

-(void)viewDidAppear:(BOOL)animated { [super viewDidAppear:animated]; CGRect frame = _textView.frame; frame.size.height = _textView.contentSize.height; _textView.frame = frame; } -(无效)视图显示:(BOOL)动画 { [超级视图显示:动画]; CGRect frame=_textView.frame; frame.size.height=_textView.contentSize.height; _textView.frame=frame; }
您可以使用
UIStringDrawing
category中的方法计算文本大小:

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

UITextView
UIScrollView
UILabel
是子视图。
UIScrollView
已经估计了高度并在内容中显示文本输入

所以我们只需将
ContentSize.Height
设置为OK即可

如果
ContentInset==UIEdgeInset(a、b、c、d)
,则必须添加
UIEdgeInset的维度


查看更多信息:

您有什么内容?我有英文和日文两种语言的字符串。请让我按照此操作为什么这么复杂?它是有效的,但这似乎是一个如此复杂的解决方案,我几乎不能相信没有一个更简单的解决方案。。。但是我找了几个小时也没找到它。。。在我所知道的所有其他平台(Java、NET、html)中,这都非常简单…@jbandi我不同意这个解决方案是复杂的。但如果您需要知道一行的大小,则可以使用
[text-sizeWithFont:font]
方法。有什么比这更简单?@Nekto好吧,这个问题的主要目标是得到一个“自动增长的文本框”。使用此解决方案,首先必须获得UITextView的宽度(为此,通常必须找出设备的方向)。然后,您必须计算UITextView内容的高度(为此,您必须向UITextView询问当前字体等详细信息)。然后,您必须将计算出的高度传播回UITextView,而autolayout并不是那么容易。。。这对我来说太复杂了,破坏了所有的封装。。。但我是一个头脑简单的人:-)@Nekto顺便说一句:我很高兴你发布了这个解决方案,我投了更高的票。它帮助我解决了我的问题。但我认为应该有一个由iOS平台提供的更简单的解决方案来实现“自动增长的文本框”。当“放入视图”出现时,这似乎不起作用。当put in ViewDid出现时,它会工作,但随后会导致“视觉闪烁”,这意味着屏幕上可以看到调整大小_textView.contentSize.height在ViewWillDisplay中调用时返回错误的值…我在viewDidLoad中使用它,但不起作用…您的评论非常有用。它在ViewDidDisplay中起作用。
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];