Подтвердить что ты не робот

Как сделать вертикальный слайдер быстрым?

Мне было интересно, как я могу создать вертикальный слайдер в swift.

Я попытался использовать .transform, а затем добавил поворот, но это вернуло исключение и повернуло весь экран. Мне нужен вертикальный слайдер.

Мне было интересно, знает ли кто-нибудь о возможности поворота ползунка в swift?

Спасибо

4b9b3361

Ответ 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 это может быть хорошей идеей, пытаясь переместить ее вверх в иерархии классов, как в этом примере.