diff --git a/SkyFloatingLabelTextField/SkyFloatingLabelTextFieldTests/SkyFloatingLabelTextFieldTests.swift b/SkyFloatingLabelTextField/SkyFloatingLabelTextFieldTests/SkyFloatingLabelTextFieldTests.swift index 33020c2..6c5fc8a 100644 --- a/SkyFloatingLabelTextField/SkyFloatingLabelTextFieldTests/SkyFloatingLabelTextFieldTests.swift +++ b/SkyFloatingLabelTextField/SkyFloatingLabelTextFieldTests/SkyFloatingLabelTextFieldTests.swift @@ -928,6 +928,18 @@ class SkyFloatingLabelTextFieldTests: XCTestCase { // swiftlint:disable:this typ XCTAssertEqual(size.height, floatingLabelTextField.titleHeight() + floatingLabelTextField.textHeight()) } + func test_whenIntristicContentSizeInvoked_whenAPlaceHolderIsSet_thenWidthIsNotZero() { + // given + floatingLabelTextField = SkyFloatingLabelTextField() // need to create a new instance with no frame set + floatingLabelTextField.placeholder = "Placeholder" + + // when + let width = floatingLabelTextField.intrinsicContentSize.width + + // then + XCTAssertGreaterThan(width, 0) + } + // MARK: Error Message Placement func test_whenSettingErrorMessage_whenErrorMessagePlacementSetToDefault_thenTitleLabelTextIsChanged() { // given diff --git a/Sources/SkyFloatingLabelTextField.swift b/Sources/SkyFloatingLabelTextField.swift index ad55ffe..ae3675e 100644 --- a/Sources/SkyFloatingLabelTextField.swift +++ b/Sources/SkyFloatingLabelTextField.swift @@ -838,10 +838,11 @@ open class SkyFloatingLabelTextField: UITextField { // swiftlint:disable:this ty - returns: the content size to be used for auto layout */ override open var intrinsicContentSize: CGSize { + let width = max(super.intrinsicContentSize.width, bounds.size.width) if errorMessagePlacement == .bottom { - return CGSize(width: bounds.size.width, height: titleHeight() + textHeight() + errorHeight()) + return CGSize(width: width, height: titleHeight() + textHeight() + errorHeight()) } else { - return CGSize(width: bounds.size.width, height: titleHeight() + textHeight()) + return CGSize(width: width, height: titleHeight() + textHeight()) } }