2011-11-14 42 views
23

我正在为我的应用程序定制UISlider。我希望滑块处于垂直方向,但默认的UISlider处于水平方向。我无法找到如何更改UISlider的方向。如何将UISlider更改为垂直?

如何在XCode中制作垂直滑块?

回答

49

默认情况下,UISlider是水平的( - )。如果您希望使其垂直(|),则必须以编程方式执行此操作,可能需要使用CGAffineTransform。例如,您可以将此片段添加到viewDidLoad或任何你认为合适的:

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

你好IT的工作,但我想要一个问题上半部分是下来部分是上面了解 –

+1

hardik,只是扭转轮换。即'CGAffineTransformMakeRotation(-M_PI_2)' – izzy

2

如果您正在使用自动布局:

在您的viewDidLoad中,尝试:

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的限制。 您可能需要通过设置其框架属性来手动调整它的大小。

1

我有一个问题:

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

,因为我在viewDidLoad方法的代码。相反,我把代码放在ViewDidAppear中,它工作正常。

编辑:它不必在ViewDidAppear,ViewDidLoad工作正常(甚至更好)。您可以禁用自动调整大小,或者为正在旋转的滑块设置约束,以便旋转后大小不会更改。

相关问题