我想知道如何在Swift中创建一个垂直滑动条。
我尝试使用.transform
,然后添加旋转,但是这会返回一个异常并旋转整个屏幕。我只需要一个垂直滑块。
我想知道是否有人知道如何在Swift中旋转滑块?
谢谢
假设您在谈论< strong> UISlider :
您的方向是正确的,但可能将< em> AffineTransformation 应用于错误的项目... 您应该使用< strong> UISlider.transform 来更改其方向。 这是有效的代码(我使用InterfaceBuilder添加了UISlider):
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var verticalSlider: UISlider!{
didSet{
verticalSlider.transform = CGAffineTransform(rotationAngle: CGFloat(-M_PI_2))
}
}
}
使用面向对象编程(OOP)。如果您将此旋转定义为UIView的扩展,则不仅UIView而且所有继承自UIView的子类都可以旋转。当然,这包括UISlider,还包括UILabel,UIButton和大约200个其他子类...请参见此处的UIView子类列表
extension UIView
{
func makeVertical()
{
transform = CGAffineTransform(rotationAngle: -CGFloat.pi / 2)
}
}
// usage example:
sldBoilerTemperature.makeVertical()
了解继承是很好的,可以节省很多工作。对于许多需要制作Swift扩展的情况,尝试将其向上移动到类层次结构中可能是个好主意,就像这个例子一样。
使用约束实现Swift-5垂直滑块
func transformSlider(){
var constraints = [NSLayoutConstraint]()
ControlSlider.transform = CGAffineTransform(rotationAngle: CGFloat(-Double.pi/2))
ControlSlider.translatesAutoresizingMaskIntoConstraints = false
constraints.append(ControlSlider.widthAnchor.constraint(equalTo: self.heightAnchor, multiplier: 0.8))
constraints.append(ControlSlider.centerYAnchor.constraint(equalTo: self.centerYAnchor))
let sliderWidth = (ControlSlider.frame.height * 0.8)/2
print(sliderWidth)
constraints.append(ControlSlider.leadingAnchor.constraint(equalTo: self.leadingAnchor, constant: (20-sliderWidth)))
NSLayoutConstraint.activate(constraints)
}
CGAffineTransform(rotationAngle: -CGFloat.pi)
。该代码表示对一个仿射变换进行旋转,旋转角度为负的π弧度。 - nathangitterCGAffineTransform(rotationAngle: -.pi/2)
- exp