2012-01-06 15 views
5

UIStepper è molto comodo ma voglio cambiarne l'aspetto, ho bisogno di avere un'icona personalizzata non più e meno e voglio anche cambiare il colore del controllo. Come posso raggiungere questo obiettivo? Grazie in anticipo!Cambia aspetto di UIStepper

+0

Questo non è possibile. Si prega di presentare un bug che richiede questa funzione: https://bugreport.apple.com –

risposta

2

Attualmente non è possibile farlo. Dovrai scrivere un oggetto personalizzato UIControl se desideri personalizzare le icone.

Dal UIStepper Class Reference, gli unici parametri che è possibile modificare sono

continuous property 
    autorepeat property 
    wraps property 
    minimumValue property 
    maximumValue property 
    stepValue property 

    value property 

Non è possibile personalizzare le icone.

Tuttavia, poiché si tratta di una sottoclasse di UIView, è possibile provare a modificare backgroundColor.

+0

Cambiare il 'backgroundColor' non funzionerà, a causa delle decisioni su come è stato implementato' UIStepper'. L'interrogante dovrebbe presentare un bug: https://bugreport.apple.com –

+0

Vedo che fa schifo, comunque c'è un'alternativa open source? grazie per la risposta, a proposito. –

5

Questo funziona:

[[UIButton appearanceWhenContainedIn:[UIStepper class], nil] setBackgroundImage:[UIImage imageNamed:@"normal.png"] forState:UIControlStateNormal]; 
[[UIButton appearanceWhenContainedIn:[UIStepper class], nil] setBackgroundImage:[UIImage imageNamed:@"highlighted.png"] forState:UIControlStateHighlighted]; 
[[UIButton appearanceWhenContainedIn:[UIStepper class], nil] setBackgroundImage:[UIImage imageNamed:@"disabled.png"] forState:UIControlStateDisabled]; 

Non sicuro come prova di futuro che è però.

+0

Bella scoperta. Qualche modo per impostare immagini diverse per i controlli sinistro e destro? – tagyro

+0

@AndreiStoleru Suppongo che tu abbia come target ios5 e significhi + incrementare e - diminuire le immagini. Non senza sottoclassi o aggiunta di una categoria su UIStepper. Ma puoi personalizzare il divisore con [[UIImageView appearanceWhenContainedIn: [UIStepper class], nil] setImage: [UIImage imageNamed: @ "divider.png"]]; – Timmehmainframe

+0

'appearanceWhenContainedIn' è stato deprecato in iOS 9 e non è più raccomandato per l'uso, nel caso in cui le persone dal futuro arrivino qui. – hvaughan3

13

A partire da iOS 6.0 è possibile utilizzare - (UIImage *)decrementImageForState:(UIControlState)state e - (UIImage *)incrementImageForState:(UIControlState)state per modificare le etichette sul controllo UIStepper.

Questo funziona per iOS 6.0:

[_stepper setDecrementImage:[UIImage imageNamed:@"decrementIcon.png"] forState:UIControlStateNormal];

+1

Funziona bene. Questa dovrebbe essere la risposta accettata se su iOS> = 6. –

0

È sempre possibile scorrere l'UIViews e indovinate, anche. Ad ogni modo, questo è il mio codice, che non risponde direttamente alla domanda, ma è un po 'pulito.

@implementation UIStepper (Util) 

- (void) fixForIos7 { 
    if (!IS_IOS7) 
     return; 
    for (UIView *view in self.subviews) { 
     view.backgroundColor = [UIColor whiteColor]; 
     UIButton *button = (UIButton*)view; 
     [button setTintColor:[UIColor blackColor]]; 
    } 
} 

@end 
2

Ecco la soluzione che funziona per me.

piattaforma IOS 7,1

[stepper setBackgroundImage:[UIImage new] forState:UIControlStateNormal]; 
[stepper setDividerImage:[UIImage new] forLeftSegmentState:UIControlStateNormal rightSegmentState:UIControlStateNormal]; 

il risultato è solo incremento, immagini di decremento sono visibili.

Problemi correlati