How to Change the UISlider to Vertical?

前端 未结 3 1379
既然无缘
既然无缘 2021-02-07 01:04

I am customizing an UISlider for my app. I want the slider to be in vertical orientation, but the default UISlider is in horizontal orientation. I coul

相关标签:
3条回答
  • 2021-02-07 01:37

    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.

    0 讨论(0)
  • 2021-02-07 01:40

    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;
    
    0 讨论(0)
  • 2021-02-07 01:48

    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.

    0 讨论(0)
提交回复
热议问题