Эх сурвалжийг харах

add `sizeThatFits` to YYTextView: #15

ibireme 9 жил өмнө
parent
commit
47b42988fa
1 өөрчлөгдсөн 21 нэмэгдсэн , 0 устгасан
  1. 21 0
      YYText/YYTextView.m

+ 21 - 0
YYText/YYTextView.m

@@ -2428,6 +2428,27 @@ typedef NS_ENUM(NSUInteger, YYTextMoveDirection) {
     }
 }
 
+- (CGSize)sizeThatFits:(CGSize)size {
+    YYTextLayout *textLayout = self.textLayout;
+    CGSize currentSize = YYCGSizePixelCeil(textLayout.textBoundingSize);
+    if (_verticalForm) {
+        if (currentSize.height == size.height) return currentSize;
+    } else {
+        if (currentSize.width == size.width) return currentSize;
+    }
+    
+    if (_verticalForm) {
+        size.width = CGFLOAT_MAX;
+    } else {
+        size.height = CGFLOAT_MAX;
+    }
+    YYTextContainer *newContainer = _innerContainer.mutableCopy;
+    newContainer.size = size;
+    YYTextLayout *newLayout = [YYTextLayout layoutWithContainer:newContainer text:textLayout.text];
+    CGSize newSize = newLayout.textBoundingSize;
+    return YYCGSizePixelCeil(newSize);
+}
+
 #pragma mark - Override UIResponder
 
 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {