根据我的iPad应用程序要求,我要垂直显示UISlider 我使用的是iOS7编译器,部署目标是iOS6 在故事板上我添加了宽度为600像素的水平UISlider。我在视图控制器中创建了IBOutlet。我没有设置任何自动布局限制。我正在使用以下代码进行旋转并使其垂直。
self.slider.transform = CGAffineTransformMakeRotation(M_PI_2);
旋转之前和之后我打印滑块的框架尺寸是正确的。但滑块看起来不合适。它只显示中心的旋钮。如何旋转UISlider?
答案 0 :(得分:11)
我有一个垂直滑块使用iOS 8和Xcode 6,故事板中只有3个约束和一行代码。这是界面的裁剪屏幕截图:
垂直滑块和旁边的UIImageView之间有3个约束:
当然,一行代码是:
self.vSlider.transform = CGAffineTransformMakeRotation(-M_PI_2);
在Xcode 6的故事板中设置这些约束很容易,但我认为在代码中编写这些约束以支持iOS 7或6应该很简单。
答案 1 :(得分:10)
我让它以这种方式工作:
在viewDidLoad:
我添加了
[self.slider removeConstraints:self.slider.constraints];
[self.slider setTranslatesAutoresizingMaskIntoConstraints:YES];
以便在使用
旋转滑块之前调用它self.slider.transform=CGAffineTransformRotate(self.slider.transform,270.0/180*M_PI);
并且无需删除并重新添加到superview。
答案 2 :(得分:4)
这是一个古老的话题,但这里是一个Swift解决方案,在故事板中有自动布局限制,没有别的。
1 /您需要向IBOutlet添加旋转:
@IBOutlet weak var mySlider: UISlider! {
didSet {
mySlider.transform = CGAffineTransform(rotationAngle: -CGFloat.pi/2)
} // didSet
} // IBOutlet
2 /在故事板中定义约束,记住滑块将围绕其中心旋转。
例如,如果要在myView的左侧找到mySlider,则需要三个约束。
mySlider当然会在故事板中显示为水平,但是会有正确的大小调整,并且中心将被正确定位。
答案 3 :(得分:2)
取消选中ViewController上的自动布局,SDK 7.0下没有其他选项可以使其垂直工作:(
答案 4 :(得分:1)
关于将UISlider垂直放置,有很多可能的解决方案。以下是我在XCode5中启用autoLayout的iOS7摘要(默认情况下在故事板中):
在viewDidLoad
添加方法中
self.slider.transform = CGAffineTransformMakeRotation(M_PI_2);
在故事板中定义关于滑块显式的autoLayout约束,无论您喜欢什么
答案 5 :(得分:0)
在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的约束。 您可能需要通过设置其frame属性手动调整大小。
答案 6 :(得分:0)
您不能使用故事板来构建UISlider。 通过编码构建UISlider。
slider = [[UISlider alloc] initWithFrame:CGRectMake(640, 150, 600, 400)];
[slider.layer setAnchorPoint:CGPointMake(0.0f, 0.0f)];
slider.transform = CGAffineTransformMakeRotation(M_PI/2);
[self.view addSubview:slider];
答案 7 :(得分:0)
试试这个: -
self.slider.transform = CGAffineTransformRotate(slideToUnlock.transform,-90.0 / 180 * M_PI);
答案 8 :(得分:0)
尝试使用以下代码在垂直位置旋转UISlider ..
//To rotate the slider in Vertical Position
CGAffineTransform sliderRotation = CGAffineTransformIdentity;
sliderRotation = CGAffineTransformRotate(sliderRotation, -(M_PI / 2));
sliderBrightness.transform=sliderRotation;
答案 9 :(得分:0)
对我而言,两步流程效果最好(包含一些以前的解决方案)
Autolayout步骤) 我在IB中添加了一个垂直视图,并使用autolayout将其链接到相邻视图。然后我在视图中添加了一个滑块,并将其连接到视图的中心。然后将滑块的宽度连接到视图的高度。最后控制拖动滑块出口到我的ViewController代码(作为滑块)
代码步骤)
然后简单地添加到我的viewWillAppear(swift-code):
let trans = CGAffineTransformMakeRotation(CGFloat(M_PI_2));
slider.transform = trans;