UISlider如何垂直放置?

Posted

技术标签:

【中文标题】UISlider如何垂直放置?【英文标题】:How to put UISlider vertical? 【发布时间】:2010-03-04 05:13:31 【问题描述】:

我想将UISlider 垂直放入。我对此一无所知,所以请帮助我。

【问题讨论】:

这是昨天提出的这个问题的重复:***.com/questions/2369926/… 【参考方案1】:

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

- (void)viewDidLoad 

    [super viewDidLoad];

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

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

【讨论】:

这会将 minimumValue 放在顶部。使用 M_PI * -0.5 将 minimumValue 端放在底部。 变形后,如何在滑动时跟踪拇指的矩形位置? M_PI 是定义为表示您在学校 (22/7) 学习的数学常数 Pi 的值的常数。 @ravinsp 你知道如何以同样的方式转换拇指图像以便在正确的位置出现阴影吗?【参考方案2】:

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

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

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

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

【讨论】:

其实你可以用逗号(而不是点)将浮点数放入数字中。【参考方案3】:

斯威夫特 3:

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

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

【讨论】:

【参考方案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 属性来手动调整它的大小。

【讨论】:

【参考方案5】:

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

@IBOutlet weak var slider: UISlider! 
    didSet 
        slider.transform = CGAffineTransform(rotationAngle: .pi / -2)
    

【讨论】:

以上是关于UISlider如何垂直放置?的主要内容,如果未能解决你的问题,请参考以下文章

匹配 UIToolBar 中的 MPVolumeView 和 UISlider 垂直位置

如何将大图像添加到 UISlider 背景或放置在滚动视图中?

如何使用 UISlider 旋转 UIImageView?

.xib 中的垂直 UISlider 用于自定义类?

如何读取 UISlider 拇指图像的大小

将 UIImage 作为“刻度线”添加到 UISlider