根据内容增加UITextView的高度

时间:2014-12-14 04:14:48

标签: ios objective-c uitextview

我的项目中有一个备注部分,我想在UITextView中添加这些备注。我想要它,这样当我在文本视图中添加长文本时,整个文本视图会垂直增长以容纳文本。

我不希望UITextView滚动。相反,我希望它根据其内容增加其高度。

当我们有短文时我想要这样:

short text

当我在文本视图中添加一个长文本时,它应该像这样增加它的高度:

long text

如何实现它,以便高度自动增加?

2 个答案:

答案 0 :(得分:0)

您可以使用NSAttributedString获取文本的大小。

NSAttributedString *string = [[NSAttributedString alloc] initWithString:textView.text attributes:@{NSFontAttributeName:textView.font}];
float width = [string size].width;
float height = [string size].height;
// Then set the UITextView size using height and width

您可以在委托方法中实现此功能:- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text并不断调整大小。

答案 1 :(得分:0)

你可以试试这样的东西:

- (void)textViewDidChange:(UITextView *)textView
  {
    CGFloat fixedWidth = textView.frame.size.width;
    CGSize newSize = [textView sizeThatFits:CGSizeMake(fixedWidth, MAXFLOAT)];
    CGRect newFrame = textView.frame;
    newFrame.size = CGSizeMake(fmaxf(newSize.width, fixedWidth), newSize.height);
    textView.frame = newFrame;
    textview.scrollEnabled = NO;
  }