【问题标题】:UITextView contentSize automatically decreasesUITextView contentSize 自动减小
【发布时间】:2013-10-09 11:26:18
【问题描述】:

我有一个UITextView,我试图随着行数的增加调整其高度。除此之外,我需要调整包含UITextViewUIView 的大小。我为此使用以下代码:

-(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 等应用相同的行为。知道如何实现这一目标吗?

【问题讨论】:

    标签: ios objective-c ios7 uitextview uitextviewdelegate


    【解决方案1】:

    如果我理解正确,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)];
    
    }
    

    【讨论】:

    • 好像没有这种方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-20
    • 1970-01-01
    • 1970-01-01
    • 2014-12-22
    • 1970-01-01
    • 1970-01-01
    • 2014-01-18
    相关资源
    最近更新 更多