iOS中的垂直UISlider具有自动布局功能

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个约束:

  1. vSlider.Center Y =图像View.Center Y.
  2. vSlider.Width = Image View.Height
  3. vSlider.Center X =图像View.Trailing + 16

当然,一行代码是:

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.


Ker*_*dex 7

这是一个古老的话题,但这里有一个 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 的左侧,则需要三个约束。

  1. myView.Leading = mySlider.CenterX - 20
  2. mySlider.width = myView.Height(例如乘数为 0.8)
  3. mySlider.CenterY = myView.CenterY

mySlider 当然会在故事板中水平显示,但会具有正确的大小,并且中心将被正确定位。