2010-03-04 17 views
42

Chcę umieścić w pionie UISlider. Nie mam pojęcia o tym, więc proszę pomóżcie mi w tym.jak ustawić UISlider w pionie?

+3

jest to duplikat to pytanie zadawane wczoraj: http://stackoverflow.com/questions/ 2369926/how-can-i-make-a-vertical-uislider –

Odpowiedz

103

Trzeba to zrobić programowo. Zakładając, że UISlider jest zobowiązany do zmiennej o nazwie slider dodać ten kod w metodzie viewDidLoad w ViewController.m:

- (void)viewDidLoad { 

    [super viewDidLoad]; 

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

Daj mi znać, jeśli potrzebujesz więcej pomocy w tej sprawie ..

+40

Powoduje to umieszczenie końca minimalnej wartości na górze. Użyj M_PI * -0.5, aby umieścić końcówkę minimumValue na dole. –

+0

Przydatna uwaga. To najczęstszy scenariusz. Dzięki chrispix. – ravinsp

+2

Możesz także użyć -M_PI_2 –

30

Od Xcode 4.2, możesz rodzaj zrobić to samo w konstruktorze interfejsów.

  • utworzyć suwak
  • pokazać "Identity Inspector"
  • Dodaj "Użytkownika Runtime atrybut"
  • Ustaw ścieżkę klucza do "layer.transform.rotation.z", typem "Łańcuch" ( "Numer" nie zezwoli na wartości zmiennoprzecinkowe) (możliwe od Xcode 5) i wartość do "-1.570795" (-π/2).

Niestety, nadal będzie wyglądać poziomo w Kreatorze interfejsów.

Ale można ustawić środek i nie trzeba tworzyć niestandardowej klasy, więc w niektórych przypadkach może być przydatny. Efekt jest taki sam jak kod ravinsp.

+0

Właściwie możesz umieścić spację w Number za pomocą przecinka (zamiast kropki). – user500

+0

Znacznie czystszy niż akceptowana, oparta na kodzie odpowiedź, IMHO. – user1021430

4

W przypadku pracy z układami auto:

W swojej viewDidLoad, spróbuj:

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

To nie działa z ograniczeniami, więc podstęp jest usunięcie ograniczeń dla uislider. Może być konieczna ręczna zmiana rozmiaru przez ustawienie jej właściwości ramki.

5

Swift 3:

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

// Zastosowanie 1,5 odwrócić cień suwaka jeśli chcesz

Powiązane problemy