Как сделать вертикальный слайдер быстрым?
Мне было интересно, как я могу создать вертикальный слайдер в swift.
Я попытался использовать .transform
, а затем добавил поворот, но это вернуло исключение и повернуло весь экран. Мне нужен вертикальный слайдер.
Мне было интересно, знает ли кто-нибудь о возможности поворота ползунка в swift?
Спасибо
Ответы
Ответ 1
Предполагая, что вы говорите о UISlider:
Вы смотрели в правильном направлении, но, вероятно, применили AffineTransformation к неправильному пункту... Вы должны использовать UISlider.transform, чтобы изменить его ориентацию. Вот рабочий код (я добавил UISlider с помощью InterfaceBuilder):
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.
}
}
Ответ 2
Варианты 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 Нет Пробел
Ответ 3
Используйте ООП. Если вы определяете это вращение как расширение на UIView, то можно вращать не только UIView, но и все подклассы, наследующие UIView. Это, конечно, включает UISlider, но также UILabel, UIButton и около 200? другие подклассы... см. здесь список подклассов для UIView
extension UIView
{
func makeVertical()
{
transform = CGAffineTransform(rotationAngle: -CGFloat.pi / 2)
}
}
// usage example:
sldBoilerTemperature.makeVertical()
Хорошо знать о наследовании, экономит много работы. Для многих расширений Swift это может быть хорошей идеей, пытаясь переместить ее вверх в иерархии классов, как в этом примере.