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

Как изменить UISlider на вертикальную?

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

Как создать вертикальный слайдер в XCode?

4b9b3361

Ответ 1

По умолчанию UISlider является горизонтальным (-). Если вы хотите сделать его вертикальным (|), тогда вы должны сделать это программно, возможно, с помощью CGAffineTransform. Например, вы можете добавить этот фрагмент к viewDidLoad или везде, где вы сочтете это подходящим:

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

Ответ 2

Если вы используете автоматические макеты:

В вашем представлении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. Возможно, вам придется изменить его размер вручную, установив его свойство кадра.

Ответ 3

У меня была проблема с:

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

потому что у меня был код в методе ViewDidLoad. Вместо этого я поместил код в ViewDidAppear, и он работал нормально.

Изменить: он не обязательно должен быть в ViewDidAppear, ViewDidLoad отлично работает (даже лучше). Вы можете отключить автоматическое изменение размера или установить ограничение для ползунка, который вы вращаете, чтобы размер не изменился после поворота.