       } else {
         self.titleLabel.text = self.titleForState(self.currentState)
       }
+      
+      if let titleColor = self.titleColorForState(UIControlState.Selected) {
+        self.titleLabel.textColor = titleColor
+      } else {
+        if let titleColor = self.titleColorForState(self.currentState) {
+          self.titleLabel.textColor = titleColor
+        } else {
+          self.titleLabel.textColor = UIColor.blackColor()
+        }
+      }
     } else {
       self.imageView.image = self.imageForState(self.currentState)
       self.titleLabel.text = self.titleForState(self.currentState)
+      if let titleColor = self.titleColorForState(self.currentState) {
+        self.titleLabel.textColor = titleColor
+      } else {
+        self.titleLabel.textColor = UIColor.blackColor()
+      }
     }
     
     // Set overlay alpha.

  
  func setImage(image: UIImage?, forState state: UIControlState) {
    
    let imageForState = ImageForState()
    imageForState.image = image
    imageForState.state = state
    self.addImageForState(imageForState)
  }
  
  
  func setTitle(title: String?, forState state: UIControlState) {
    
    let titleForState = TitleForState()
    titleForState.string = title
    titleForState.state = state
    self.addTitleForState(titleForState)
  }
  
  private func relayoutContent() {

  // Class properties
  private var imagesForState: [ImageForState] = []
  private var titlesForState: [TitleForState] = []
  private var titleColorsForState: [TitleColorForState] = []
  
  private var targets: [Target] = []
  private var currentState = UIControlState.Normal
  
