【发布时间】:2010-03-04 05:13:31
【问题描述】:
我想将UISlider 垂直放入。我对此一无所知,所以请帮助我。
【问题讨论】:
-
这是昨天提出的这个问题的重复:stackoverflow.com/questions/2369926/…
标签: objective-c iphone math uislider
我想将UISlider 垂直放入。我对此一无所知,所以请帮助我。
【问题讨论】:
标签: objective-c iphone math uislider
您必须以编程方式执行此操作。假设您的 UISlider 绑定到名为 slider 的变量,请将此代码添加到 ViewController.m 中的 viewDidLoad 方法中:
- (void)viewDidLoad {
[super viewDidLoad];
CGAffineTransform trans = CGAffineTransformMakeRotation(M_PI * 0.5);
slider.transform = trans;
}
如果您需要更多帮助,请告诉我。
【讨论】:
从 Xcode 4.2 开始,您可以在某种程度上在 Interface Builder 中做同样的事情。
不幸的是,它在 Interface Builder 中仍会显示为水平。
但是您可以定位中心并且不需要创建自定义类,因此在某些情况下它可能足够有用。效果和ravinsp的代码一样。
【讨论】:
斯威夫特 3:
slider.transform = slider.transform.rotated(by: CGFloat(0.5 * Float.pi))
// 如果需要,使用 1.5 反转滑块的阴影
【讨论】:
如果您使用自动布局:
在您的 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 属性来手动调整它的大小。
【讨论】:
使用 IBOutlet 和 setter 观察者。 如果您希望最大值位于底部,请将 pi 除以正 2
@IBOutlet weak var slider: UISlider! {
didSet {
slider.transform = CGAffineTransform(rotationAngle: .pi / -2)
}
}
【讨论】: