Skip to content

Commit

Permalink
Added minimum height
Browse files Browse the repository at this point in the history
  • Loading branch information
GRiMe2D committed Nov 14, 2017
1 parent 1e00c1b commit ced6400
Show file tree
Hide file tree
Showing 3 changed files with 54 additions and 19 deletions.
6 changes: 6 additions & 0 deletions ABCDAutoResizingTextView/ABCDAutoResizingTextView.h
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,12 @@ IB_DESIGNABLE
Default value: NO
*/
@property (nonatomic) IBInspectable BOOL automaticallyScrollSuperview;
/**
Minimum height when there's no content
0 - means, calculate from current font
*/
@property (nonatomic) IBInspectable CGFloat minHeight;
@end

NS_ASSUME_NONNULL_END
6 changes: 6 additions & 0 deletions ABCDAutoResizingTextView/ABCDAutoResizingTextView.m
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ - (instancetype)initWithCoder:(NSCoder *)aDecoder {
}

- (void)commonInit {
_minHeight = 0;
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textDidChange) name:UITextViewTextDidChangeNotification object:self];
}

Expand Down Expand Up @@ -78,6 +79,11 @@ - (CGSize)intrinsicContentSize {
CGSize size = self.contentSize;
size.width += self.contentInset.left + self.contentInset.right;
size.height += self.contentInset.top + self.contentInset.bottom;


CGFloat minHeight = self.minHeight ?: self.font.lineHeight;
size.height = MAX(minHeight + self.textContainerInset.top + self.textContainerInset.bottom, size.height);

return size;
}

Expand Down
61 changes: 42 additions & 19 deletions test-app/Base.lproj/Main.storyboard
Original file line number Diff line number Diff line change
Expand Up @@ -21,41 +21,64 @@
<scrollView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" keyboardDismissMode="interactive" translatesAutoresizingMaskIntoConstraints="NO" id="ELJ-Sw-OdO">
<rect key="frame" x="16" y="36" width="343" height="615"/>
<subviews>
<textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" placeholderIntrinsicWidth="infinite" placeholderIntrinsicHeight="250" textAlignment="justified" translatesAutoresizingMaskIntoConstraints="NO" id="5Bc-0J-gN4" customClass="ABCDAutoResizingTextView">
<rect key="frame" x="0.0" y="0.0" width="343" height="250"/>
<color key="backgroundColor" white="0.66666666666666663" alpha="1" colorSpace="calibratedWhite"/>
<string key="text">Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Nam liber te conscient to factor tum poen legum odioque civiuda.</string>
<fontDescription key="fontDescription" type="system" weight="black" pointSize="21"/>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="CONSUMER FEEDBACK" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="GEa-eo-WAe">
<rect key="frame" x="0.0" y="40" width="343" height="24"/>
<fontDescription key="fontDescription" type="system" weight="thin" pointSize="20"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="PROS" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="hN6-wS-CWZ">
<rect key="frame" x="8" y="72" width="39" height="18"/>
<fontDescription key="fontDescription" type="system" weight="thin" pointSize="15"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="CONS" textAlignment="natural" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="hyi-aB-Om9">
<rect key="frame" x="8" y="140" width="42" height="18"/>
<fontDescription key="fontDescription" type="system" weight="thin" pointSize="15"/>
<nil key="textColor"/>
<nil key="highlightedColor"/>
</label>
<textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" textAlignment="natural" translatesAutoresizingMaskIntoConstraints="NO" id="rjh-9b-FFQ" customClass="ABCDAutoResizingTextView">
<rect key="frame" x="0.0" y="166" width="343" height="34"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<fontDescription key="fontDescription" type="system" weight="thin" pointSize="15"/>
<textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="boolean" keyPath="automaticallyScrollSuperview" value="YES"/>
</userDefinedRuntimeAttributes>
</textView>
<textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" textAlignment="natural" translatesAutoresizingMaskIntoConstraints="NO" id="gi5-nR-VE5" customClass="ABCDAutoResizingTextView">
<rect key="frame" x="0.0" y="250" width="343" height="280"/>
<textView clipsSubviews="YES" multipleTouchEnabled="YES" contentMode="scaleToFill" textAlignment="natural" translatesAutoresizingMaskIntoConstraints="NO" id="5X8-Rn-b8q" customClass="ABCDAutoResizingTextView">
<rect key="frame" x="0.0" y="98" width="343" height="34"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<string key="text">Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Nam liber te conscient to factor tum poen legum odioque civiuda.</string>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<fontDescription key="fontDescription" type="system" weight="thin" pointSize="15"/>
<textInputTraits key="textInputTraits" autocapitalizationType="sentences"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="boolean" keyPath="automaticallyScrollSuperview" value="YES"/>
</userDefinedRuntimeAttributes>
</textView>
</subviews>
<constraints>
<constraint firstAttribute="trailing" secondItem="5Bc-0J-gN4" secondAttribute="trailing" id="8wg-of-H0f"/>
<constraint firstAttribute="trailing" secondItem="gi5-nR-VE5" secondAttribute="trailing" id="D09-jh-4mp"/>
<constraint firstItem="5Bc-0J-gN4" firstAttribute="top" secondItem="ELJ-Sw-OdO" secondAttribute="top" id="TA7-Ln-BHN"/>
<constraint firstItem="5Bc-0J-gN4" firstAttribute="leading" secondItem="ELJ-Sw-OdO" secondAttribute="leading" id="UGG-Mq-cPb"/>
<constraint firstItem="gi5-nR-VE5" firstAttribute="width" secondItem="5Bc-0J-gN4" secondAttribute="width" id="VkK-Px-i4s"/>
<constraint firstItem="5Bc-0J-gN4" firstAttribute="width" secondItem="ELJ-Sw-OdO" secondAttribute="width" id="bcn-7k-64y"/>
<constraint firstItem="gi5-nR-VE5" firstAttribute="leading" secondItem="ELJ-Sw-OdO" secondAttribute="leading" id="dPF-BM-rRf"/>
<constraint firstItem="gi5-nR-VE5" firstAttribute="top" secondItem="5Bc-0J-gN4" secondAttribute="bottom" id="iEq-JR-hYr"/>
<constraint firstAttribute="bottom" secondItem="gi5-nR-VE5" secondAttribute="bottom" id="lyH-of-CmP"/>
<constraint firstItem="hyi-aB-Om9" firstAttribute="leading" secondItem="ELJ-Sw-OdO" secondAttribute="leading" constant="8" id="8vs-qL-AbR"/>
<constraint firstItem="hN6-wS-CWZ" firstAttribute="top" secondItem="GEa-eo-WAe" secondAttribute="bottom" constant="8" id="J3a-WF-Dam"/>
<constraint firstItem="rjh-9b-FFQ" firstAttribute="width" secondItem="ELJ-Sw-OdO" secondAttribute="width" id="L2A-38-wi8"/>
<constraint firstItem="GEa-eo-WAe" firstAttribute="width" secondItem="ELJ-Sw-OdO" secondAttribute="width" id="O7b-D0-Ljs"/>
<constraint firstItem="hN6-wS-CWZ" firstAttribute="leading" secondItem="ELJ-Sw-OdO" secondAttribute="leading" constant="8" id="P7f-I2-eKM"/>
<constraint firstItem="5X8-Rn-b8q" firstAttribute="leading" secondItem="ELJ-Sw-OdO" secondAttribute="leading" id="YLb-Mj-Ya5"/>
<constraint firstItem="GEa-eo-WAe" firstAttribute="leading" secondItem="ELJ-Sw-OdO" secondAttribute="leading" id="YVU-6v-TUO"/>
<constraint firstAttribute="trailing" secondItem="rjh-9b-FFQ" secondAttribute="trailing" id="aQl-X5-BAZ"/>
<constraint firstItem="GEa-eo-WAe" firstAttribute="top" secondItem="ELJ-Sw-OdO" secondAttribute="top" constant="40" id="dsj-zT-PAB"/>
<constraint firstItem="rjh-9b-FFQ" firstAttribute="leading" secondItem="ELJ-Sw-OdO" secondAttribute="leading" id="frF-dP-yvo"/>
<constraint firstAttribute="bottom" secondItem="rjh-9b-FFQ" secondAttribute="bottom" id="gnb-y3-4sP"/>
<constraint firstItem="5X8-Rn-b8q" firstAttribute="top" secondItem="hN6-wS-CWZ" secondAttribute="bottom" constant="8" id="mHt-pl-Xl6"/>
<constraint firstItem="rjh-9b-FFQ" firstAttribute="top" secondItem="hyi-aB-Om9" secondAttribute="bottom" constant="8" id="sTg-vN-X35"/>
<constraint firstItem="hyi-aB-Om9" firstAttribute="top" secondItem="5X8-Rn-b8q" secondAttribute="bottom" constant="8" id="sxu-Wv-vgO"/>
<constraint firstItem="5X8-Rn-b8q" firstAttribute="width" secondItem="ELJ-Sw-OdO" secondAttribute="width" id="uey-aH-Hti"/>
<constraint firstAttribute="trailing" secondItem="5X8-Rn-b8q" secondAttribute="trailing" id="vIB-r2-Bmi"/>
</constraints>
</scrollView>
</subviews>
<color key="backgroundColor" white="0.33333333333333331" alpha="1" colorSpace="calibratedWhite"/>
<color key="backgroundColor" red="0.93333333333333335" green="0.93333333333333335" blue="0.93333333333333335" alpha="1" colorSpace="calibratedRGB"/>
<constraints>
<constraint firstItem="sMN-sg-3L2" firstAttribute="trailing" secondItem="ELJ-Sw-OdO" secondAttribute="trailing" constant="16" id="Nzd-sx-yUT"/>
<constraint firstItem="ELJ-Sw-OdO" firstAttribute="leading" secondItem="sMN-sg-3L2" secondAttribute="leading" constant="16" id="T5k-Jj-Sph"/>
Expand Down

0 comments on commit ced6400

Please sign in to comment.