43

我想UISlider竖着放。我对此一无所知,所以请帮助我。

4

5 回答 5

105

您必须以编程方式执行此操作。假设您的 UISlider 绑定到一个名为 的变量slider,请将此代码添加到 ViewController.m 中的 viewDidLoad 方法中:

- (void)viewDidLoad {

    [super viewDidLoad];

    CGAffineTransform trans = CGAffineTransformMakeRotation(M_PI * 0.5);
    slider.transform = trans;
}

如果您需要更多帮助,请告诉我。

于 2010-03-04T05:38:32.190 回答
30

从 Xcode 4.2 开始,您可以在 Interface Builder中做同样的事情。

  • 创建滑块
  • 显示“身份检查员”
  • 添加“用户定义的运行时属性”
  • 设置key path为“layer.transform.rotation.z”,类型为“细绳” (“数字”不允许浮点值)(可能从 Xcode 5 开始)和“-1.570795”(-π/2)的值。

不幸的是,它仍然会在 Interface Builder 中显示为水平的。

但是您可以定位中心并且不需要创建自定义类,因此在某些情况下它可能足够有用。效果和ravinsp的代码一样。

于 2012-06-29T12:32:02.410 回答
7

斯威夫特 3:

slider.transform = slider.transform.rotated(by: CGFloat(0.5 * Float.pi))

// 如果需要,使用 1.5 反转滑块的阴影

于 2017-01-20T12:02:22.840 回答
4

如果您使用自动布局:

在您的 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 属性来手动调整它的大小。

于 2014-03-06T07:07:34.827 回答
0

使用 IBOutlet 和 setter 观察者。如果您希望最大值位于底部,请将 pi 除以正 2

@IBOutlet weak var slider: UISlider! {
    didSet {
        slider.transform = CGAffineTransform(rotationAngle: .pi / -2)
    }
}
于 2018-06-21T00:06:02.623 回答