23 votes

Comment changer le UISlider en vertical ?

Je suis en train de personnaliser un UISlider pour mon application. Je veux que le curseur soit en orientation verticale, mais la configuration par défaut est la même. UISlider est en orientation horizontale. Je n'ai pas trouvé comment changer une UISlider de l'orientation.

Comment faire un slider vertical dans XCode ?

49voto

PengOne Points 33226

Par défaut, un UISlider est horizontal (--). Si vous souhaitez le rendre vertical (|), vous devez le faire de manière programmatique, probablement avec une balise CGAffineTransform . Par exemple, vous pouvez ajouter cet extrait à l'adresse suivante viewDidLoad ou à tout autre endroit que vous jugez approprié :

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

2voto

Antzi Points 1251

Si vous utilisez des mises en page automatiques :

Dans votre viewDidLoad, essayez :

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

Il ne fonctionne pas avec les contraintes, donc l'astuce est de supprimer les contraintes pour votre uislider. Vous devrez peut-être le redimensionner manuellement en définissant sa propriété frame.

2voto

KLD0093 Points 1

J'ai eu un problème avec :

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

parce que j'avais le code dans la méthode ViewDidLoad. À la place, j'ai mis le code dans la méthode ViewDidAppear et cela a bien fonctionné.

Edit : il n'est pas nécessaire que ce soit dans le ViewDidAppear, ViewDidLoad fonctionne bien aussi (même mieux). Vous pouvez désactiver le redimensionnement automatique ou définir une contrainte pour le curseur que vous faites tourner afin que la taille ne change pas après la rotation.

0voto

LawlessLLC Points 35

Pour Swift 5

override func viewDidLoad() {
    super.viewDidLoad()
    // Turn Slider Vertical 
    myslider.transform = CGAffineTransform(rotationAngle: (CGFloat.pi / 2))

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X