UITextView自适应高度的解决方案

UITextView自适应高度的解决方案

UITextView想要自适应高度有一个比较简单的解决方法,就是利用textView的contentSize属性。
新建一个类继承UITextView,重载setContent方法,将自身的高度设置为当前的contentSize这就已经做到了textView的高度自适应,当然我们可能还需要附加一些功能,我们可以实现一个在
高度改变时候调用的委托这样就能方便一些特殊的处理。

这是我写的代码。

 1 #import <UIKit/UIKit.h>

 2 

 3 @class VTAutoHeightTextView;

 4 

 5 @protocol VTAutoHeightTextViewDelegate <NSObject>

 6 

 7 @optional

 8 - (void)textView:(VTAutoHeightTextView *)textView heightChanged:(NSInteger)height;

 9 

10 @end

11 

12 @interface VTAutoHeightTextView : UITextView

13 

14 @property (assign, nonatomic) id<UITextViewDelegate, VTAutoHeightTextViewDelegate> delegate;

15 

16 @end

17   

 

 

 1 #import "VTAutoHeightTextView.h"

 2 

 3 @implementation VTAutoHeightTextView

 4 

 5 - (void)setContentSize:(CGSize)contentSize

 6 {

 7   CGSize oriSize = self.contentSize;

 8   [super setContentSize:contentSize];

 9 

10   if(oriSize.height != self.contentSize.height)

11   {

12     CGRect newFrame = self.frame;

13     newFrame.size.height = self.contentSize.height;

14     self.frame = newFrame;

15     if([self.delegate respondsToSelector:@selector(textView:heightChanged:)])

16     {

17       [self.delegate textView:self heightChanged:self.contentSize.height - oriSize.height];

18     }

19   }

20  }

21 

22 @end

 



 

 

你可能感兴趣的:(UITextView)