今天朋友有個奇怪的需求
“騎”怪
要求UITextView根據(jù)內(nèi)容調(diào)整自身的大小哗咆,當超過某個高度后,不再變化
步驟
-
定義UITextView的子類
@interface AutoHeightTextView : UITextView
-
添加最大高度的屬性
@property (nonatomic, assign) CGFloat maxHeight;
注冊監(jiān)聽者:監(jiān)聽內(nèi)容變化
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(changeFrame) name:UITextViewTextDidChangeNotification object:nil];
設(shè)置自身大小
- (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];
}
再次申明:這是一個奇怪的需求,所以就寫了奇怪的代碼娱颊,其中還有很多不足剧罩。例如幕与,最大高度比原來的高度還小,或者不設(shè)置都會有小問題。