      - parameter text:             The text to set
      - parameter characterSpacing: =0; Amount of character spacing. Ignored if == 0
      - parameter lineSpacing:      =0; Amount of line spacing. Ignored if == 0
+     - parameter preserveAlignment:=true; If alignment should be preserved after setting attributedText
      - parameter ownAttributes:    =nil; Add your own attributes to the text. Ignored if == nil
      - parameter range:            ={0, text.length}; Range of the string to set attributes to.
      */
     public func setTextWithSpacing(text: String?,
         characterSpacing: CGFloat = 0,
         lineSpacing: CGFloat = 0,
+        preserveAlignment: Bool = true,
         ownAttributes: [String : AnyObject]? = nil,
         range: NSRange? = nil)
     {
+        let alignment = self.textAlignment
+        
         // Assign text
         self.attributedText = _attributedSpacingString(text, characterSpacing: characterSpacing, lineSpacing: lineSpacing, ownAttributes: ownAttributes, range: range)
+        
+        // Set alignment if needed
+        if preserveAlignment {
+            self.textAlignment = alignment
+        }
     }
     
     /// self.setTextWithSpacing with own text
     public func setSpacing(characterSpacing characterSpacing: CGFloat = 0,
         lineSpacing: CGFloat = 0,
+        preserveAlignment: Bool = true,
         ownAttributes: [String : AnyObject]? = nil,
         range: NSRange? = nil)
     {

        ownAttributes: [String : AnyObject]? = nil,
        range: NSRange? = nil,
        preserveFont: Bool = true,
        preserveColor: Bool = true)
    {
        self.setTextWithSpacing(self.text,
            characterSpacing: characterSpacing,

            characterSpacing: characterSpacing,
            lineSpacing: lineSpacing,
            ownAttributes: ownAttributes,
            preserveAlignment: preserveAlignment,
            range: range)
    }
}
