Colore del pulsante UIActionSheet

Come posso cambiare il colore del colore del pulsante UIActionSheet?

iOS 8 (UIAlertController)

È semplicissimo da fare se usi un UIAlertController. Basta cambiare il colore della tinta sulla vista di UIAlertController.

[alertController.view setTintColor:[UIColor red]; 

iOS 7 (UIActionSheet)

Cambio il colore del testo con successo usando questo semplice metodo.

 - (void) changeTextColorForUIActionSheet:(UIActionSheet*)actionSheet { UIColor *tintColor = [UIColor redColor]; NSArray *actionSheetButtons = actionSheet.subviews; for (int i = 0; [actionSheetButtons count] > i; i++) { UIView *view = (UIView*)[actionSheetButtons objectAtIndex:i]; if([view isKindOfClass:[UIButton class]]){ UIButton *btn = (UIButton*)view; [btn setTitleColor:tintColor forState:UIControlStateNormal]; } } } 

Assicurati di eseguire questo dopo aver chiamato

 [actionSheet showInView]; 

Se lo chiami prima di [showInView], tutti i pulsanti tranne il pulsante Annulla saranno colorati. Spero che questo aiuti qualcuno!

Ho creato la class figlio UICustomActionSheet, che consente di personalizzare i caratteri, i colors e le immagini dei pulsanti all’interno di UIActionSheet. È assolutamente sicuro per l’appstore, puoi trovare il codice di questa class al prossimo link:

https://github.com/gloomcore/UICustomActionSheet

Divertirsi!

Sfortunatamente, senza utilizzare API non documentate, non esiste un modo ufficiale per cambiare il colore del pulsante su un UIActionSheet. Potrebbe essere ansible personalizzare questo se si sottoclass il controllo UIActionSheet.

Vedi questo esempio: http://blog.corywiles.com/customizing-uiactionsheet-buttons

Possiamo usare le immagini di sfondo per farlo. Penso che sia il modo più semplice.

 UIActionSheet *actionSheet = [[UIActionSheet alloc] initWithTitle:@"Actionsheet" delegate:self cancelButtonTitle:nil destructiveButtonTitle:nil otherButtonTitles:nil]; [actionSheet addButtonWithTitle:@"Button 1"]; //Blue color [actionSheet addButtonWithTitle:@"Button 2"]; [actionSheet addButtonWithTitle:@"Cancel"]; [actionSheet addButtonWithTitle:nil]; [actionSheet setCancelButtonIndex:2]; [actionSheet setDestructiveButtonIndex:1]; [actionSheet showInView:self.view]; UIButton *button = [[actionSheet subviews] objectAtIndex:1]; UIImage *img = [button backgroundImageForState:UIControlStateHighlighted];//[UIImage imageNamed:@"alert_button.png"]; [button setBackgroundImage:img forState:UIControlStateNormal]; 

Puoi facilmente ottenerlo usando il seguente codice

Apple UIActionSheetDelegate documentazione del protocollo

https://developer.apple.com/library/ios/documentation/uikit/reference/UIModalViewDelegate_Protocol/UIActionSheetDelegate/UIActionSheetDelegate.html

 - (void)willPresentActionSheet:(UIActionSheet *)actionSheet { for (UIView *_currentView in actionSheet.subviews) { if ([_currentView isKindOfClass:[UIButton class]]) { UIButton *button = (UIButton *)_currentView; [button setTitleColor:YOUR_COLOR forState:UIControlStateNormal]; } } }