El color del text de la interfaz de usuario inhabilitada es siempre el color del estado normal.

escribí en mi código

[[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil] setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor lightGrayColor], NSFontAttributeName:[UIFont boldSystemFontOfSize:16.0f]} forState:UIControlStateDisabled]; [[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil] setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor blueColor], NSFontAttributeName:[UIFont boldSystemFontOfSize:16.0f]} forState:UIControlStateNormal]; 

pero el color del text siempre es azul a pesar de que el baritema está deshabilitado.

Estoy progtwigndo en xcode 5 y ios7

para mí el siguiente code funciona.

 - (void)viewDidLoad { [super viewDidLoad]; UIBarButtonItem * btnTemp = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(btnDone_Click:)]; [btnTemp setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor lightGrayColor], NSFontAttributeName:[UIFont boldSystemFontOfSize:16.0f]} forState:UIControlStateNormal]; [btnTemp setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor blueColor], NSFontAttributeName:[UIFont systemFontOfSize:16.0f]} forState:UIControlStateDisabled]; [self.navigationItem setRightBarButtonItem:btnTemp]; } - (void)btnDone_Click : (id)sender { UIBarButtonItem * button = (UIBarButtonItem *)sender; [button setEnabled:FALSE]; [self performSelector:@selector(enableButton:) withObject:sender afterDelay:2.0f]; } - (void)enableButton : (id)sender { UIBarButtonItem * button = (UIBarButtonItem *)sender; [button setEnabled:TRUE]; } 

Descubrí que es porque establecí la barra de navigation en secreto después de que llamé a self.navigationItem.rightBarItem.enable. Poner esto último después de que el primero corrige el problema

Me encontré con el mismo problema y lo resolví declarando el estado del button normal sin ninguna información de color.

Ejemplo rápido:

  myBtn.setTitleTextAttributes([NSFontAttributeName: UIFont(name: "xxx", size: 20.0)!, NSForegroundColorAttributeName: UIColor.whiteColor()], forState: UIControlState.Normal) myBtn.setTitleTextAttributes([NSFontAttributeName: UIFont(name: "xxx", size: 20.0)!, NSForegroundColorAttributeName: UIColor.darkGrayColor()], forState: UIControlState.Disabled) 

solo se vuelve

  myBtn.setTitleTextAttributes([NSFontAttributeName: UIFont(name: "xxx", size: 20.0)!], forState: UIControlState.Normal) 

No estoy seguro, pero creo que fue porque declaré también un tintColor en XCode.