Sat*_*yam 16 rotation uislider cgaffinetransform ios7
根据我的iPad应用程序要求,我要垂直显示UISlider.
我使用的是iOS7编译器,部署目标是iOS6.
在故事板上我添加了宽度为600像素的水平UISlider.我在视图控制器中创建了IBOutlet.我没有设置任何自动布局限制.我正在使用以下代码进行旋转并使其垂直.
self.slider.transform = CGAffineTransformMakeRotation(M_PI_2);
Run Code Online (Sandbox Code Playgroud)
在旋转之前和之后,我打印滑块的框架尺寸是正确的.但滑块看起来不合适.它只显示中心的旋钮.如何旋转UISlider?

bug*_*oaf 11
我有一个垂直滑块使用iOS 8和Xcode 6,故事板中只有3个约束和一行代码.这是界面的裁剪屏幕截图:

垂直滑块和旁边的UIImageView之间有3个约束:
当然,一行代码是:
self.vSlider.transform = CGAffineTransformMakeRotation(-M_PI_2);
Run Code Online (Sandbox Code Playgroud)
在Xcode 6中的故事板中设置这些约束很容易,但我认为在代码中编写这些约束以支持iOS 7或6应该很简单.
小智 10
我让它以这种方式工作:
在viewDidLoad:我补充说
[self.slider removeConstraints:self.slider.constraints];
[self.slider setTranslatesAutoresizingMaskIntoConstraints:YES];
Run Code Online (Sandbox Code Playgroud)
所以在旋转滑块之前调用它
self.slider.transform=CGAffineTransformRotate(self.slider.transform,270.0/180*M_PI);
Run Code Online (Sandbox Code Playgroud)
并且无需删除并重新添加到superview.
这是一个古老的话题,但这里有一个 Swift 解决方案,在故事板中具有自动布局约束,仅此而已。
1/ 您需要为 IBOutlet 添加旋转:
@IBOutlet weak var mySlider: UISlider! {
didSet {
mySlider.transform = CGAffineTransform(rotationAngle: -CGFloat.pi/2)
} // didSet
} // IBOutlet
Run Code Online (Sandbox Code Playgroud)
2/ 在故事板中定义约束,记住滑块将围绕其中心旋转。
例如,如果您想将 mySlider 定位在 myView 的左侧,则需要三个约束。
mySlider 当然会在故事板中水平显示,但会具有正确的大小,并且中心将被正确定位。