UIScrollView contentSize не работает

У меня проблема с моим UIScollView, который прокручивает вертикально. Я просто хочу, чтобы мой ScollView прокручивался по горизонтали. Я пытался изменить contentSize, но это не сработало.

Я использую ограничения, и этот код:

var plugeeNews : [Plugs]?

var topNewsScrollView : UIScrollView = {
        var scrollView = UIScrollView(frame: CGRect(x: 0, y: 0, width: UIScreen.main.bounds.width, height: 75))
        scrollView.isPagingEnabled = true
        scrollView.showsHorizontalScrollIndicator = false
        scrollView.showsVerticalScrollIndicator = false
        scrollView.backgroundColor = .gray
        scrollView.isDirectionalLockEnabled = true
        scrollView.translatesAutoresizingMaskIntoConstraints = false
        return scrollView
    }()


func setupViewInTopNewsScrollView() {
        for i in 0..<plugeeNews.count {
            let xPosition = screenSize.width * CGFloat(i)
            let myView = TopNewsCell(frame: CGRect(x: xPosition, y: 0, width: screenSize.width , height: heightOfNewsCell))
            myView.label.text = plugeeNews[i]
            myView.randomBackgroundColor(number: i)
            topNewsScrollView.contentSize = CGSize(width: topNewsScrollView.frame.width * CGFloat(i + 1),height:  heightOfNewsCell)
            topNewsScrollView.addSubview(myView)
        }
    }

Это ограничение высоты моего UIScrollView:

...
        topNewsScrollView.heightAnchor.constraint(equalToConstant: heightOfNewsCell).isActive = true

И вот результат:

введите описание изображения здесь

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


person Mathis Delaunay    schedule 28.03.2017    source источник
comment
Почему вы устанавливаете contentSize своего UIScrollView каждый раз, когда добавляете новый UIView ??   -  person Victor Sigler    schedule 29.03.2017
comment
Вам следует внимательно прочитать это руководство raywenderlich.com/122139/uiscrollview-tutorial.   -  person Victor Sigler    schedule 29.03.2017
comment
Виктор: чтобы не создавать новую переменную для сохранения значения i. Хорошо, я собираюсь прочитать руководство, спасибо   -  person Mathis Delaunay    schedule 29.03.2017
comment
contentSize следует назначать только один раз, а не каждый раз, как в приведенном выше коде.   -  person Victor Sigler    schedule 29.03.2017


Ответы (1)


Установите размер содержимого:

scrollContainer.contentSize = CGSize(width:10000, height:50)
person user1707694    schedule 28.03.2017
comment
Если вы установите width на 10000, конечно, он будет прокручиваться по горизонтали, но это необходимо правильно рассчитать на основе количества UIView внутри UIScrollView, а не устанавливать вручную таким образом - person Victor Sigler; 29.03.2017
comment
Хорошо, я собираюсь попробовать это, но почему я должен поставить 50 вместо высоты моего представления контента (кто равен 100) - person Mathis Delaunay; 29.03.2017
comment
Это не сработало, я всегда могу переместить свою ячейку вертикально, и она не по центру. - person Mathis Delaunay; 29.03.2017