UITextView根据内容自动改变frame

来源:互联网 发布:数据挖掘工程师简历 编辑:程序博客网 时间:2024/06/05 09:21

注意点:

textview中计算string占据的高度不能使用[NSStringsizeWithFont:constrainedToSize:],因为textView显示文字有自己的样式,在上下左右都有一定的偏移,所以先设置textView.text属性,然后调用[UITextView sizeThatFits:(CGSize)size] 此函数返回的size就是在textviewtext显示的区域大小。

- (void)textViewDidChange:(UITextView *)textView{    [textView flashScrollIndicators];   // 闪动滚动条        static CGFloat maxHeight = 130.0f;    CGRect frame = textView.frame;    CGSize constraintSize = CGSizeMake(frame.size.width, MAXFLOAT);    CGSize size = [textView sizeThatFits:constraintSize];    if (size.height >= maxHeight)    {        size.height = maxHeight;        textView.scrollEnabled = YES;// 允许滚动    }    else    {        textView.scrollEnabled = NO;// 不允许滚动,当textview的大小足以容纳它的text的时候,需要设置scrollEnabed为NO,否则会出现光标乱滚动的情况    }    textView.frame = CGRectMake(frame.origin.x, frame.origin.y, frame.size.width, size.height);}


原创粉丝点击