我想知道如何在swift中创建一个垂直滑块。
我已尝试使用.transform
然后添加旋转,但这会返回异常并旋转整个屏幕。我只需要一个垂直滑块。
我想知道是否有人知道如何在swift中旋转滑块?
由于
答案 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
大多数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扩展而言,尝试将其在类层次结构中向上移动是一个好主意,例如本示例。