Я хочу поместить UISlider
по вертикали. Я понятия не имею об этом, поэтому, пожалуйста, помогите мне в этом.
Как поставить UISlider вертикально?
Ответ 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)
}
}