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

时间:2015-04-19 15:32:44

标签: swift rotation slider

我想知道如何在swift中创建一个垂直滑块。

我已尝试使用.transform然后添加旋转,但这会返回异常并旋转整个屏幕。我只需要一个垂直滑块。

我想知道是否有人知道如何在swift中旋转滑块?

由于

3 个答案:

答案 0 :(得分:28)

假设您正在谈论 UISlider

您正朝着正确的方向前进,但可能将 AffineTransformation 应用于错误的项目......您应该使用 UISlider.transform 来更改其方向。 这是工作代码(我确实使用InterfaceBuilder添加了UISlider):

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var verticalSlider: UISlider!{
        didSet{
            verticalSlider.transform = CGAffineTransform(rotationAngle: CGFloat(-M_PI_2))
        }
    }
    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view, typically from a nib.
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}

答案 1 :(得分:1)

选项1:

在Swift 4中:

-M_PI_2 已弃用,因此请使用 Double.pi / 2

verticalSlider.transform = CGAffineTransform(rotationAngle: CGFloat(-Double.pi / 2))

选项2:适用于所有目标C和Swift

Key path = layer.transform.rotation.z 
Type     =  String
Value    = -1.570795

enter image description here

大多数Imp注意:在keypath No Space之前和之后

答案 2 :(得分:0)

使用OOP。如果将此旋转定义为UIView的扩展,则不仅可以旋转UIView,而且可以旋转从UIView继承的所有子类。当然,这包括UISlider,还包括UILabel,UIButton和大约200个?其他子类...请参见此处 list of subclasses for UIView

 extension UIView
 {
    func makeVertical()
    {
         transform = CGAffineTransform(rotationAngle: -CGFloat.pi / 2)
    }
 }

  // usage example:
  sldBoilerTemperature.makeVertical()  

了解继承是一件好事,可以节省很多工作。对于许多Swift扩展而言,尝试将其在类层次结构中向上移动是一个好主意,例如本示例。