Подтвердить что ты не робот

Как поставить UISlider вертикально?

Я хочу поместить UISlider по вертикали. Я понятия не имею об этом, поэтому, пожалуйста, помогите мне в этом.

4b9b3361

Ответ 1

Вы должны сделать это программно. Предполагая, что ваш UISlider связан с переменной с именем slider, добавьте этот код в свой метод viewDidLoad в ViewController.m:

- (void)viewDidLoad {

    [super viewDidLoad];

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

Сообщите мне, если вам нужна дополнительная помощь по этому поводу.

Ответ 2

Как и в Xcode 4.2, вы можете сортировать то же самое в Interface Builder.

  • Создайте слайдер
  • Покажите "Инспектор личности"
  • Добавить "Пользовательский атрибут времени выполнения"
  • Задайте путь ключа к "layer.transform.rotation.z", тип "String" ( "Number" не позволит значениям с плавающей запятой) (возможно, начиная с Xcode 5), и значение "-1.570795" (-π/2).

К сожалению, он по-прежнему будет отображаться как горизонтальный в Interface Builder.

Но вы можете позиционировать центр и не создавать собственный класс, поэтому в некоторых случаях он может быть достаточно полезен. Эффект такой же, как и код ravinsp.

Ответ 3

Swift 3:

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

//Используйте 1,5 для инвертирования тени слайдера, если вы хотите

Ответ 4

Если вы работаете с автомаркетами:

В вашем представленииDidLoad попробуйте:

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

Он не работает с ограничениями, поэтому трюк заключается в том, чтобы удалить ограничения для вашего uislider. Возможно, вам придется изменить его размер вручную, установив его свойство кадра.

Ответ 5

Использование IBOutlet и сеттера наблюдателей. Если вы хотите, чтобы максимум был внизу, разделите число на положительное 2

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