UITextView contentSize自动减少

时间:2013-10-09 11:26:18

标签: ios objective-c ios7 uitextview uitextviewdelegate

我有一个UITextView我想要调整大小的高度随着行数的增加而增加。除此之外,我需要调整包含UIView的{​​{1}}的大小。我正在使用以下代码:

  

- (void)textViewDidChange:(UITextView *)textView {

UITextView
     

self.containerView.frame.origin.y-final,self.containerView.frame.size.width,   frame.size.height + 13)];

CGFloat before = textView.frame.size.height;

CGRect frame = textView.frame;

frame.size = textView.contentSize;

CGFloat after = frame.size.height, diff = after - before, final = 0;

if (diff>16) {
    final = 8;
}else if(diff<-1){
    final = -16;
}else{
    final = 0;
}

[self.containerView setFrame: CGRectMake(self.containerView.frame.origin.x,
     

}

我还试图在文本更改时更改容器的Y位置。我根据字体大小使用静态数值,以避免并发症。

但问题是,每当[textView setFrame: frame]; 输入新行时,它会将UITextView的大小调整为原始大小,因此contentSize的帧也会缩短片刻,看起来真的很难看。此外,Y位置取决于此UITextView更改,当自动调整大小时,它会全部搞乱。

我正在寻找与whatsapp或viber等应用相同的行为。知道如何实现这个目标吗?

1 个答案:

答案 0 :(得分:0)

如果我理解正确,containerView包含一个文本字段,必须围绕它绘制,无论文本字段的大小如何?如果是这样,请尝试这样的事情

-(void) textViewDidChange:(UITextView *)textView

{

CGRect frame = textView.frame;

frame.size = textView.contentSize;

//do your magic calculations

[textView setFrame: frame];

[self.containerView setFrame: CGRectMake(self.containerView.frame.origin.x,
self.containerView.frame.origin.y-final, self.containerView.frame.size.width, frame.size.origin.y +frame.size.height+13)];

}