diff --git a/CHANGELOG.md b/CHANGELOG.md index e2592d34..1c0a6caa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Change Log +## [Version 1.9.7](https://github.com/slackhq/SlackTextViewController/releases/tag/v1.9.7) + +##### Hot Fixes & Enhancements: +- Increased SLKTextView's (and therefore its subclasses') influence on its own height By @lukkas + ## [Version 1.9.6](https://github.com/slackhq/SlackTextViewController/releases/tag/v1.9.6) This release includes many iOS 11 and iPhone X hot fixes. diff --git a/Source/SLKTextInputbar.m b/Source/SLKTextInputbar.m index ca970691..fd03d56b 100644 --- a/Source/SLKTextInputbar.m +++ b/Source/SLKTextInputbar.m @@ -315,12 +315,10 @@ - (CGFloat)appropriateHeight if (self.textView.numberOfLines == 1) { height = minimumHeight; - } - else if (self.textView.numberOfLines < self.textView.maxNumberOfLines) { - height = [self slk_inputBarHeightForLines:self.textView.numberOfLines]; - } - else { - height = [self slk_inputBarHeightForLines:self.textView.maxNumberOfLines]; + } else { + height = self.textView.appropriateHeight; + height += self.contentInset.top; + height += self.slk_bottomMargin; } if (height < minimumHeight) { @@ -344,17 +342,6 @@ - (BOOL)limitExceeded return NO; } -- (CGFloat)slk_inputBarHeightForLines:(NSUInteger)numberOfLines -{ - CGFloat height = self.textView.intrinsicContentSize.height; - height -= self.textView.font.lineHeight; - height += roundf(self.textView.font.lineHeight*numberOfLines); - height += self.contentInset.top; - height += self.slk_bottomMargin; - - return height; -} - - (CGFloat)slk_bottomMargin { CGFloat margin = self.contentInset.bottom; diff --git a/Source/SLKTextView.h b/Source/SLKTextView.h index 05850cb5..8d2f1efd 100644 --- a/Source/SLKTextView.h +++ b/Source/SLKTextView.h @@ -53,6 +53,9 @@ UIKIT_EXTERN NSString * const SLKTextViewPastedItemData; /** The placeholder's font. Default is the textView's font. */ @property (nonatomic, copy, null_resettable) UIFont *placeholderFont; +/** Height being multiplication of number of lines and font's line height. */ +@property(nonatomic, readonly) CGFloat appropriateHeight; + /** The maximum number of lines before enabling scrolling. Default is 0 wich means limitless. If dynamic type is enabled, the maximum number of lines will be calculated proportionally to the user preferred font size. */ @property (nonatomic, readwrite) NSUInteger maxNumberOfLines; diff --git a/Source/SLKTextView.m b/Source/SLKTextView.m index 08a43081..ef4b636e 100644 --- a/Source/SLKTextView.m +++ b/Source/SLKTextView.m @@ -165,6 +165,16 @@ - (UIFont *)placeholderFont return self.placeholderLabel.font; } +- (CGFloat)appropriateHeight +{ + NSUInteger numberOfLines = self.numberOfLines > self.maxNumberOfLines ? self.maxNumberOfLines : self.numberOfLines; + CGFloat height = [self intrinsicContentSize].height; + height -= self.font.lineHeight; + height += roundf(self.font.lineHeight*numberOfLines); + + return height; +} + - (NSUInteger)numberOfLines { CGSize contentSize = self.contentSize;