2011-11-14 15 views
23

Sto personalizzando un UISlider per la mia app. Voglio che il cursore sia orientato verticalmente, ma l'impostazione predefinita è UISlider con orientamento orizzontale. Non sono riuscito a trovare come modificare l'orientamento di UISlider.Come modificare UISlider in verticale?

Come posso creare un cursore verticale in XCode?

risposta

49

Per impostazione predefinita, un UISlider è orizzontale (-). Se si desidera renderlo verticale (|), è necessario farlo a livello di programmazione, probabilmente con uno CGAffineTransform. Ad esempio, è possibile aggiungere questo frammento di codice a viewDidLoad o dove si ritiene più appropriato:

CGAffineTransform trans = CGAffineTransformMakeRotation(M_PI_2); 
slider.transform = trans; 
+0

Ciao lavoro IT, ma un problema, voglio che la parte superiore sia rivolta verso il basso, la parte è superiore Comprensione –

+1

hardik, basta invertire la rotazione. Ad esempio: 'CGAffineTransformMakeRotation (-M_PI_2)' – izzy

2

Nel caso in cui si sta utilizzando layout auto:

Nella tua viewDidLoad, provare:

UIView *superView = self.sizeSlider.superview; 
[self.sizeSlider removeFromSuperview]; 
[self.sizeSlider removeConstraints:self.view.constraints]; 
self.sizeSlider.translatesAutoresizingMaskIntoConstraints = YES; 
self.sizeSlider.transform = CGAffineTransformMakeRotation(M_PI_2); 
[superView addSubview:self.sizeSlider]; 

lo fa non funziona con i vincoli, quindi il trucco è rimuovere i vincoli per il tuo uislider. Potrebbe essere necessario ridimensionarlo manualmente impostando la sua proprietà frame.

1

ho avuto un problema con:

CGAffineTransform trans = CGAffineTransformMakeRotation(M_PI_2); 
slider.transform = trans; 

perché ho avuto il codice in modo viewDidLoad. Invece, ho messo il codice in ViewDidAppear e ha funzionato bene.

Modifica: non deve essere nel ViewDidAppear, ViewDidLoad funziona anche bene (ancora meglio). È possibile disabilitare il ridimensionamento automatico o impostare un vincolo per il cursore che si sta ruotando in modo che le dimensioni non cambino dopo la rotazione.