Swift - горизонтальный UIPickerView - PullRequest
0 голосов
/ 01 мая 2020

Я пытаюсь сделать горизонтальный сборщик с помощью Swift, вращая UIPickerView и затем вращая метку внутри него, я пытался также вращать вид внутри него вместо метки.

Но в обоих направлениях У меня такой же результат, как показано на рисунке, ярлыки внутри сборщика все еще не отображаются так, как это должно быть.

Пожалуйста, посмотрите на фото и код, любые идеи о том, как исправить это?

Horizontal Picker

@IBOutlet weak var myPicker: UIPickerView!
var rotationAngle: CGFloat!
var pickerArray: [String] = [String]()

override func viewDidLoad() {
    super.viewDidLoad()

    rotationAngle = -90 * (.pi/180)
    myPicker.transform = CGAffineTransform(rotationAngle: rotationAngle)

    self.myPicker.delegate = self
    self.myPicker.dataSource = self

    pickerArray = ["Hello", "World", "What", "Where", "When", "How", "Hey", "Welcome", "Good", "Ok", "Bye", "World!"]

    rotatePickerView(pickerView: myPicker)

}
func numberOfComponents(in pickerView: UIPickerView) -> Int {
    return 1
}

func pickerView(_ pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
    return pickerArray.count
}

internal func pickerView(_ pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
    return pickerArray[row]
}

func rotatePickerView(pickerView : UIPickerView) {

    myPicker.transform = CGAffineTransform(rotationAngle: rotationAngle)
    myPicker.frame = CGRect(x: -150, y: myPicker.frame.origin.y, width: view.frame.width + 300, height: 200)
}

func pickerView(_ pickerView: UIPickerView, viewForRow row: Int, forComponent component: Int, reusing view: UIView?) -> UIView {

    let label = UILabel()
    label.font = UIFont(name: "Helvetica", size: 24)
    label.font = UIFont.systemFont(ofSize: 24, weight: .regular)
    label.minimumScaleFactor = 0.5
    label.textAlignment = .center
    label.textColor = UIColor.black
    label.transform = CGAffineTransform(rotationAngle: 90 * (.pi / 180 ))

    label.text = pickerArray[row]

    return label
}
...