How to Change the UISlider to Vertical? How to Change the UISlider to Vertical? ios ios

How to Change the UISlider to Vertical?


By default, a UISlider is horizontal (--). If you wish to make it vertical (|) then you must do this programmatically, probably with a CGAffineTransform. For example, you can add this snippet to viewDidLoad or wherever you deem appropriate:

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


In case you are using auto layouts:

In your viewDidLoad, try:

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

It does not work with constraints, so the trick is to remove the constraints for your uislider.You might have to resize it manually by setting its frame property.


I had a problem with :

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

because I had the code in ViewDidLoad method. Instead, I put the code in ViewDidAppear and it worked fine.

Edit: it doesn't have to be in the ViewDidAppear, ViewDidLoad works fine too (even better). You could disable auto-resize, or set a constraint for the slider you're rotating so the size doesn't change after rotation.


matomo