горизонтальный ScrollView возвращает проблему программно - PullRequest
0 голосов
/ 11 апреля 2020

У меня есть простой ScrollView с 4 buttons внутри, и я хотел бы сделать это horizontal ScrollView.

Вот как я его настроил:

let itemScrollView: UIScrollView = {
    let v = UIScrollView()
    v.translatesAutoresizingMaskIntoConstraints = false
    v.backgroundColor = .red
    return v
}()

И я ограничиваю его и его содержание следующим образом:

itemView.addSubview(itemScrollView)
itemScrollView.addSubview(imageButton)
itemScrollView.addSubview(priceButton)
itemScrollView.addSubview(linkButton)
itemScrollView.addSubview(noteButton)
self.addSubview(dropDownButton)

itemView.heightAnchor.constraint(equalToConstant: 60).isActive = true

dropDownButton.heightAnchor.constraint(equalToConstant: 35).isActive = true
dropDownButton.widthAnchor.constraint(equalToConstant: 150).isActive = true
dropDownButton.trailingAnchor.constraint(equalTo: itemView.trailingAnchor, constant: -20).isActive = true
dropDownButton.centerYAnchor.constraint(equalTo: itemView.centerYAnchor).isActive = true

itemScrollView.topAnchor.constraint(equalTo: itemView.topAnchor).isActive = true
itemScrollView.leadingAnchor.constraint(equalTo: itemView.leadingAnchor).isActive = true
itemScrollView.trailingAnchor.constraint(equalTo: dropDownButton.leadingAnchor).isActive = true
itemScrollView.bottomAnchor.constraint(equalTo: itemView.bottomAnchor).isActive = true

imageButton.heightAnchor.constraint(equalToConstant: 25).isActive = true
imageButton.widthAnchor.constraint(equalToConstant: 25).isActive = true
imageButton.centerYAnchor.constraint(equalTo: itemScrollView.centerYAnchor).isActive = true
imageButton.leadingAnchor.constraint(equalTo: itemScrollView.leadingAnchor, constant: 20).isActive = true

priceButton.heightAnchor.constraint(equalToConstant: 25).isActive = true
priceButton.widthAnchor.constraint(equalToConstant: 25).isActive = true
priceButton.centerYAnchor.constraint(equalTo: itemScrollView.centerYAnchor).isActive = true
priceButton.leadingAnchor.constraint(equalTo: imageButton.leadingAnchor, constant: 45).isActive = true

linkButton.heightAnchor.constraint(equalToConstant: 25).isActive = true
linkButton.widthAnchor.constraint(equalToConstant: 25).isActive = true
linkButton.centerYAnchor.constraint(equalTo: itemScrollView.centerYAnchor).isActive = true
linkButton.leadingAnchor.constraint(equalTo: priceButton.leadingAnchor, constant: 45).isActive = true

noteButton.heightAnchor.constraint(equalToConstant: 25).isActive = true
noteButton.widthAnchor.constraint(equalToConstant: 25).isActive = true
noteButton.centerYAnchor.constraint(equalTo: itemScrollView.centerYAnchor).isActive = true
noteButton.leadingAnchor.constraint(equalTo: linkButton.leadingAnchor, constant: 45).isActive = true

В конце это выглядит так, именно так, как я хочу (4-я кнопка скрыта за dropDownButton), но вы можете только прокрутить по вертикали .

enter image description here

Обновление:

Добавив эту строку кода, я могу прокручивать по горизонтали:

v.alwaysBounceHorizontal = true

Однако теперь проблема в том, что он всегда «отскакивает» влево после прокрутки. Как я могу решить эту проблему?

1 Ответ

0 голосов
/ 11 апреля 2020

Требуется настроить контроллер вида на UIScrollViewDelegate, установить scrollView.delegate = self и реализовать метод scrollViewDidScroll следующим образом:

func scrollViewDidScroll(scrollView: UIScrollView) {
    if scrollView.contentOffset.y != 0 {
        scrollView.contentOffset.y = 0
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...