如何将 UISlider 更改为垂直?

发布于 2024-12-15 11:34:56 字数 151 浏览 4 评论 0原文

我正在为我的应用程序定制 UISlider 。我希望滑块处于垂直方向,但默认的 UISlider 处于水平方向。我找不到如何更改 UISlider 的方向。

如何在 XCode 中制作垂直滑块?

I am customizing an UISlider for my app. I want the slider to be in vertical orientation, but the default UISlider is in horizontal orientation. I couldn't find how to change a UISlider's orientation.

How can I make a vertical slider in XCode?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

り繁华旳梦境 2024-12-22 11:34:56

默认情况下,UISlider 是水平的 (--)。如果您希望使其垂直 (|),那么您必须以编程方式执行此操作,可能使用 CGAffineTransform。例如,您可以将此代码段添加到 viewDidLoad 或您认为合适的任何位置:

CGAffineTransform trans = CGAffineTransformMakeRotation(M_PI_2);
slider.transform = trans;

By default, a UISlider is horizontal (--). If you wish to make it vertical (|) then you must do this programmatically, probably with a CGAffineTransform. For example, you can add this snippet to viewDidLoad or wherever you deem appropriate:

CGAffineTransform trans = CGAffineTransformMakeRotation(M_PI_2);
slider.transform = trans;
森林散布 2024-12-22 11:34:56

如果您使用自动布局:

在您的 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 的约束。
您可能必须通过设置其框架属性来手动调整其大小。

In case you are using auto layouts:

In your viewDidLoad, try:

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];

It does not work with constraints, so the trick is to remove the constraints for your uislider.
You might have to resize it manually by setting its frame property.

仅冇旳回忆 2024-12-22 11:34:56

我遇到了问题:

CGAffineTransform trans = CGAffineTransformMakeRotation(M_PI_2);
slider.transform = trans;

因为我在 ViewDidLoad 方法中有代码。相反,我将代码放入 ViewDidAppear 中并且工作正常。

编辑:它不必在 ViewDidAppear 中,ViewDidLoad 也可以正常工作(甚至更好)。您可以禁用自动调整大小,或为正在旋转的滑块设置约束,以便旋转后大小不会改变。

I had a problem with :

CGAffineTransform trans = CGAffineTransformMakeRotation(M_PI_2);
slider.transform = trans;

because I had the code in ViewDidLoad method. Instead, I put the code in ViewDidAppear and it worked fine.

Edit: it doesn't have to be in the ViewDidAppear, ViewDidLoad works fine too (even better). You could disable auto-resize, or set a constraint for the slider you're rotating so the size doesn't change after rotation.

抱着落日 2024-12-22 11:34:56

对于 Swift 5

override func viewDidLoad() {
    super.viewDidLoad()
    // Turn Slider Vertical 
    myslider.transform = CGAffineTransform(rotationAngle: (CGFloat.pi / 2))

For Swift 5

override func viewDidLoad() {
    super.viewDidLoad()
    // Turn Slider Vertical 
    myslider.transform = CGAffineTransform(rotationAngle: (CGFloat.pi / 2))
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文