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

cro*_*oss 13 slider rotation swift

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

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

我想知道是否有人知道在swift中旋转滑块的方法?

谢谢

Cry*_*ppo 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.
    }


}
Run Code Online (Sandbox Code Playgroud)

  • Swift 3语法更清晰:`CGAffineTransform(rotationAngle:-CGFloat.pi)` (6认同)
  • Swift 3你应该使用CGAffineTransform.init(rotationAngle:CGFloat(-M_PI_2)) (4认同)
  • 实际上是CGAffineTransform(rotationAngle:-CGFloat.pi/2) (2认同)

Anu*_*pta 10

选项 1:

在 Swift 4 中:

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

verticalSlider.transform = CGAffineTransform(rotationAngle: CGFloat(-Double.pi / 2))
Run Code Online (Sandbox Code Playgroud)

或者

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

Key path = layer.transform.rotation.z 
Type     =  String
Value    = -1.570795
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

最重要的注意事项:keypath 前后无空格


Ted*_*len 5

使用面向对象编程。如果你将这种旋转定义为UIView上的Extension,那么不仅UIView而且继承自UIView的所有子类都可以旋转。这当然包括UISlider,还包括UILabel、UIButton等大约200个?其他子类...请参阅此处 UIView 子类列表

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

  // usage example:
  sldBoilerTemperature.makeVertical()  
Run Code Online (Sandbox Code Playgroud)

了解继承是件好事,可以节省很多工作。对于要进行的许多 Swift 扩展,尝试将其在类层次结构中向上移动可能是一个好主意,就像本例中一样。