自适应高度的TextView

今天朋友有个奇怪的需求



“骑”怪



要求UITextView根据内容调整自身的大小,当超过某个高度后,不再变化

步骤

  • 定义UITextView的子类

    @interface AutoHeightTextView : UITextView

  • 添加最大高度的属性

    @property (nonatomic, assign) CGFloat maxHeight;

  • 注册监听者:监听内容变化

  •   [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(changeFrame) name:UITextViewTextDidChangeNotification object:nil];
    
  • 设置自身大小
    - (void)changeFrame {
    CGFloat maxH = self.maxHeight;
    CGRect frame = self.frame;
    CGSize constraintSize = CGSizeMake(frame.size.width, MAXFLOAT);
    CGSize size = [self sizeThatFits:constraintSize];
    if (size.height <= frame.size.height) {
    size.height = frame.size.height;
    } else {
    if (size.height >= maxH) {
    size.height = maxH ;
    self.scrollEnabled = YES;
    } else {
    self.scrollEnabled = NO;
    }
    }
    self.frame = CGRectMake(frame.origin.x, frame.origin.y, frame.size.width, size.height);
    [self layoutSubviews];
    }


再次申明:这是一个奇怪的需求,所以就写了奇怪的代码,其中还有很多不足。例如,最大高度比原来的高度还小,或者不设置都会有小问题。

最后还要感谢韩先生提供的帮助

完整代码请移步github

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容