             let verticalCenter = height / 2.0
             let top:CGFloat = frame.size.height / 2 - ceil(verticalCenter)
             let width = (prefix! as NSString).sizeWithAttributes(attrs).width
-            let rect = CGRectMake(prefixXPosition, top, width, height)
+            let offset = (width + spacing) / 2
+            let rect = CGRectMake(prefixXPosition + offset, top, width, height)
             
             // Draw it
             (prefix! as NSString).drawInRect(rect, withAttributes: attrs)
+            centerWithPrefix(offset)
+        } else {
+            centerWithPrefix(0)
         }
     }
     

            let verticalCenter = height / 2.0
            let top:CGFloat = frame.size.height / 2 - ceil(verticalCenter)
            let width = (suffix! as NSString).sizeWithAttributes(attrs).width
            let rect = CGRectMake(suffixXPosition + spacing, top, width, height)
            
            // Draw it
            (suffix! as NSString).drawInRect(rect, withAttributes: attrs)

    // Fallback text color
    private let placeHolderTextColor = UIColor(red: 120/255.0, green: 120/255.0, blue: 120/255.0, alpha: 1)
    
    private func centerWithPrefix(offset: CGFloat) {
        self.layer.sublayerTransform = CATransform3DMakeTranslation(offset, 0, 0);
    }
    
    override public func drawRect(rect: CGRect) {
        super.drawRect(rect)
        clipsToBounds = false
        // Only draw suffix when we have a suffix and a text
        if (suffix ?? "").isEmpty == false && (text ?? "").isEmpty == false {
            
