web-dev-qa-db-fra.com

comment mettre UISlider vertical?

Je veux mettre UISlider dans verticalement. Je n'en ai aucune idée, alors aidez-moi, s'il vous plaît.

42
MD.

Vous devez faire cette programmation. En supposant que votre UISlider est lié à une variable appelée slider, ajoutez ce code dans votre méthode viewDidLoad dans ViewController.m:

- (void)viewDidLoad {

    [super viewDidLoad];

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

Faites-moi savoir si vous avez besoin d'aide supplémentaire à ce sujet ..

104
ravinsp

Depuis Xcode 4.2, vous pouvez trier de faire la même chose dans Interface Builder.

  • Créer un curseur
  • Montrer le "inspecteur d'identité"
  • Ajouter un "attribut d'exécution défini par l'utilisateur"
  • Définissez le chemin de clé sur "layer.transform.rotation.z", le type comme "Chaîne" ("Nombre" ne permet pas les valeurs en virgule flottante) (possible depuis Xcode 5) et la valeur "-1.570795" (-π/2).

Malheureusement, il apparaîtra toujours en horizontal dans Interface Builder.

Mais vous pouvez positionner le centre sans avoir besoin de créer une classe personnalisée. Cela peut donc être utile dans certains cas. L'effet est le même que le code de ravinsp.

30
nschum

Swift 3:

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

// Utilise 1.5 pour inverser l'ombre du curseur si tu veux

6
André Abreu

Si vous travaillez avec 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 des contraintes, l’astuce consiste donc à supprimer les contraintes pour votre utilisateur . Vous devrez peut-être le redimensionner manuellement en définissant sa propriété frame.

4
Antzi

Utiliser un observateur IBOutlet et un observateur .. Si vous voulez que le maximum soit au bas, divisez pi par positif

@IBOutlet weak var slider: UISlider! {
    didSet {
        slider.transform = CGAffineTransform(rotationAngle: .pi / -2)
    }
}
0
Alex Chase