From f99343b8377258fefb4d7acadde7b5048c63e00c Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Thu, 2 Jul 2020 12:00:27 +0100 Subject: [PATCH 1/2] Get the intrinsicContentSize width from the superclass. --- Sources/SkyFloatingLabelTextField.swift | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) 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()) } } From e0728c5b254f321811211db3bd23fe50c53fa8a6 Mon Sep 17 00:00:00 2001 From: Michael Brown Date: Thu, 2 Jul 2020 12:25:03 +0100 Subject: [PATCH 2/2] Added a test for intrinsicContentSize.width --- .../SkyFloatingLabelTextFieldTests.swift | 12 ++++++++++++ 1 file changed, 12 insertions(+) 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