2010-03-04 8 views
42

Quiero poner UISlider en vertical. No tengo idea de esto, así que por favor ayúdenme para esto.cómo poner vertical a UISlider?

+3

Este es un duplicado de esta pregunta pidió ayer: http://stackoverflow.com/questions/ 2369926/how-can-i-make-a-vertical-uislider –

Respuesta

103

Tienes que hacer esto programáticamente. Asumiendo que su UISlider se une a una variable llamada slider, agregue este código en su método viewDidLoad en ViewController.m:

- (void)viewDidLoad { 

    [super viewDidLoad]; 

    CGAffineTransform trans = CGAffineTransformMakeRotation(M_PI * 0.5); 
    slider.transform = trans; 
} 

Déjeme saber si usted necesita más ayuda en este ..

+40

Esto coloca el extremo minimumValue en la parte superior. Use M_PI * -0.5 para colocar el extremo mínimo de valor en la parte inferior. –

+0

Nota útil. Ese es el escenario más común. Gracias chrispix. – ravinsp

+2

También puede usar -M_PI_2 –

30

A partir de Xcode 4.2, puede tipo de hacer lo mismo en Interface Builder.

  • Crear un control deslizante
  • Muestra la "Identidad inspector"
  • Añadir un "atributo definido por el usuario en tiempo de ejecución"
  • Establecer la ruta clave para "layer.transform.rotation.z", del tipo que se "Cadena" ( "Número" no permitirá valores de punto flotante) (posible desde Xcode 5) y el valor a "-1.570795" (-π/2).

Desafortunadamente, seguirá apareciendo como horizontal en Interface Builder.

Pero puede colocar el centro y no es necesario crear una clase personalizada, por lo que puede ser útil en algunos casos. El efecto es el mismo que el código de ravinsp.

+0

En realidad, puedes poner el flotador en Número con una coma (en lugar de un punto). – user500

+0

Mucho más limpio que la respuesta aceptada, basada en código, en mi humilde opinión. – user1021430

4

En caso de que trabajan con diseños de automóviles:

En su viewDidLoad, probar:

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]; 

No funciona con limitaciones, por lo que el truco consiste en eliminar las restricciones para su uislider. Es posible que tenga que cambiar el tamaño manualmente configurando la propiedad de marco.

5

Swift 3:

slider.transform = slider.transform.rotated(by: CGFloat(0.5 * Float.pi)) 

// Uso 1,5 para invertir la sombra del deslizador si quieres

Cuestiones relacionadas