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