1

随着行数的增加,我UITextView试图调整其高度。除了这个,我需要调整UIView其中UITextView包含的大小。我为此使用以下代码:

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

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,

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

[textView setFrame: frame];

}

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

但问题是,每当UITextView进入新行时,它都会将其大小调整contentSize为原始大小,因此框架UITextView也会缩小一会儿,看起来非常难看。此外,Y 位置取决于此contentSize更改,当自动调整大小发生时,它会变得一团糟。

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

4

1 回答 1

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

}
于 2013-10-09T12:02:42.387 回答