UIView карусель XCode - PullRequest
       1

UIView карусель XCode

0 голосов
/ 21 сентября 2018

Я совершенно новичок в Xcode.Я видел пример горизонтальной карусели (см. Скриншот ниже), которая позволяет скользить по различным видам.Красное поле указывает на другой слайд, который перемещается вместе с видом.Я запутался, какие элементы необходимы для реализации такой функциональности.Подскажите пожалуйста как мне это сделать

enter image description here

1 Ответ

0 голосов
/ 24 сентября 2018

Вот мой подход:

Идея состоит в том, чтобы использовать UIPickerView и повернуть его на 90 градусов.

var pickerView: UIPickerView!
@IBOutlet weak var pickerViewContainer: UIView!
var dataHolder = ["...", "July", "August", "This Month", "..."]

override func viewDidLoad() {
    super.viewDidLoad()
    // Initialization code
    pickerView = UIPickerView(frame: CGRect(x: 0, y: 0, width: 339, height: 60))

    pickerView.delegate = self
    pickerView.dataSource = self

    pickerView.transform = CGAffineTransform(rotationAngle: 90 * (.pi / 180))
    pickerView.frame = CGRect(x: -60, y: 0, width: pickerViewContainer.frame.width+120, height: pickerViewContainer.frame.height)

    pickerViewContainer.addSubview(pickerView)
}

Теперь вы можете прокручивать по горизонтали.

Теперь все, что вам нужно, это повернуть представления для ваших строк назад на 90 градусов.

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

    let view = UIView(frame: CGRect(x: 0, y: 5, width: 50, height: 60))
    view.transform = CGAffineTransform(rotationAngle: (-90 * (.pi / 180)))

    let label = UILabel(frame: view.frame)
    label.text = dataHolder[row]
    label.textAlignment = .center
    view.addSubview(label)

    return view
}

Наверняка вынеобходимо реализовать все другие источники данных и методы делегирования, такие как

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

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

func pickerView(_ pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
    print(dataHolder[row])
}

Не забудьте

UIPickerViewDelegate, UIPickerViewDataSource

Все, что вам нужно сделать тогдаэто добавить UIView к вашему viewController в раскадровке, где должен быть ваш сборщик, и связать его с @IBOutlet weak var pickerViewContainer: UIView!

Возможно, вам нужно поиграть с номерами кадров в коде, чтобы красиво показать его и настроить кадры для вашегонеобходимо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...