 	
 	/// The animation for the placeholder when editing begins.
 	open func placeholderEditingDidBeginAnimation() {
-		if placeholderLabel.transform.isIdentity {
-			isAnimating = true
-			UIView.animate(withDuration: 0.15, animations: { [weak self] in
-				if let s = self {
-					s.placeholderLabel.transform = CGAffineTransform(scaleX: 0.75, y: 0.75)
-					switch s.textAlignment {
-					case .left, .natural:
-						s.placeholderLabel.x = 0
-					case .right:
-						s.placeholderLabel.x = s.width - s.placeholderLabel.width
-					default:break
-					}
-					s.placeholderLabel.y = -s.placeholderLabel.height + s.placeholderVerticalOffset
-					s.placeholderLabel.textColor = s.placeholderActiveColor
-				}
-			}) { [weak self] _ in
-				self?.isAnimating = false
-			}
-		} else if isEditing {
-			placeholderLabel.textColor = placeholderActiveColor
-		}
+        guard placeholderLabel.transform.isIdentity else {
+            if isEditing {
+                placeholderLabel.textColor = placeholderActiveColor
+            }
+            return
+        }
+        
+        isAnimating = true
+        UIView.animate(withDuration: 0.15, animations: { [weak self] in
+            guard let s = self else {
+                return
+            }
+            
+            s.placeholderLabel.transform = CGAffineTransform(scaleX: 0.75, y: 0.75)
+            
+            switch s.textAlignment {
+            case .left, .natural:
+                s.placeholderLabel.x = 0
+            case .right:
+                s.placeholderLabel.x = s.width - s.placeholderLabel.width
+            default:break
+            }
+            
+            s.placeholderLabel.y = -s.placeholderLabel.height + s.placeholderVerticalOffset
+            s.placeholderLabel.textColor = s.placeholderActiveColor
+        }) { [weak self] _ in
+            self?.isAnimating = false
+        }
 	}
 	
 	/// The animation for the placeholder when editing ends.

		if !placeholderLabel.transform.isIdentity && true == text?.isEmpty {
			isAnimating = true
			UIView.animate(withDuration: 0.15, animations: { [weak self] in
				if let s = self {
					s.placeholderLabel.transform = CGAffineTransform.identity
					s.placeholderLabel.x = 0
					s.placeholderLabel.y = 0
					s.placeholderLabel.textColor = s.placeholderNormalColor
				}
			}) { [weak self] _ in
				self?.isAnimating = false
			}

        guard let v = divider.line else {
            return
        }
        
        let h: CGFloat = nil == detail ? 12 : detailLabel.font.stringSize(string: detail!, constrainedToWidth: Double(width)).height
        detailLabel.frame = CGRect(x: 0, y: v.y + detailVerticalOffset, width: width, height: h)
	}
	
	/// Layout the a button.
    open func layoutButton(button: UIButton?) {
        guard 0 < width && 0 < height else {
            return
        }
        
        button?.frame = CGRect(x: width - height, y: 0, width: height, height: height)
	}
	
	/// The animation for the divider when editing begins.
