美文网首页
自适应高度的TextView

自适应高度的TextView

作者: 蓝苹果不是烂苹果 | 来源:发表于2016-08-28 22:57 被阅读77次

    今天朋友有个奇怪的需求



    “骑”怪


    要求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

    相关文章

      网友评论

          本文标题:自适应高度的TextView

          本文链接:https://www.haomeiwen.com/subject/bdlxettx.html