     }
 
     /**
+     Calculate the bounds for the error label. Override to create a custom size error field.
+     - parameter bounds: The current bounds of the title
+     - parameter editing: True if the control is selected or highlighted
+     - returns: The rectangle that the title label should render in
+     */
+    open func errorLabelRectForBounds(_ bounds: CGRect, editing: Bool) -> CGRect {
+        if errorMessagePlacement == .defaultPlacement {
+            return CGRect.zero
+        }
+        else {
+            let lineRect = lineViewRectForBounds(bounds, editing: editing)
+            
+            if editing {
+                return CGRect(x: 0, y: lineRect.origin.y + selectedLineHeight, width: bounds.size.width, height: errorHeight())
+            }
+            
+            return CGRect(x: 0, y: lineRect.origin.y + selectedLineHeight + errorHeight(), width: bounds.size.width, height: errorHeight())
+        }
+    }
+
+    /**
      Calculate the bounds for the bottom line of the control. 
      Override to create a custom size bottom line in the textbox.
      - parameter bounds: The current bounds of the line


    /// The internal `UILabel` that displays the selected, deselected title or error message based on the current state.
    open var titleLabel: UILabel!

    // MARK: Properties


        super.layoutSubviews()

        titleLabel.frame = titleLabelRectForBounds(bounds, editing: isTitleVisible() || _renderingInInterfaceBuilder)
        errorLabel.frame = errorLabelRectForBounds(bounds, editing: isErrorVisible() || _renderingInInterfaceBuilder)
        lineView.frame = lineViewRectForBounds(bounds, editing: editingOrSelected || _renderingInInterfaceBuilder)
    }

