Ярлык представления Swift Scroll, перемещающийся после переключения представления вкладок - PullRequest
0 голосов
/ 11 января 2019

У меня есть панель вкладок, и в одном из представлений есть представление прокрутки. Я добавил метку к этому виду прокрутки, но после загрузки он не в нужном месте. После перехода в другой вид вкладки и возврата сразу же он находится в правильном положении.

Вот код:

    scrollViewFunc()
    scrollView.addSubview(dateLbl)
    dateLbl.center = CGPoint(x: self.scrollView.center.x, y: self.scrollView.center.y + 100)

    func scrollViewFunc() {

    scrollView.translatesAutoresizingMaskIntoConstraints = false

    scrollView.contentSize.height = 800
    scrollView.backgroundColor = UIColor.brown
    self.view.addSubview(scrollView)

    //x,w,t,b
    scrollView.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
    scrollView.widthAnchor.constraint(equalTo: view.widthAnchor).isActive = true
    scrollView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
    scrollView.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true

}

Я поместил его в viewDidLoad (), чтобы настроить представление прокрутки, а также viewWillAppear, но проблема с загрузкой по-прежнему остается, поскольку он находится в неправильном месте.

Какой совет?

1 Ответ

0 голосов
/ 11 января 2019

Вы назначаете рамку для своей метки до того, как scrollView имеет рамку.

т.е. dateLbl.center = CGPoint(x: self.scrollView.center.x, y: self.scrollView.center.y + 100)

Должен прийти после

    scrollView.centerXAnchor.constraint(equalTo: view.centerXAnchor).isActive = true
    scrollView.widthAnchor.constraint(equalTo: view.widthAnchor).isActive = true
    scrollView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
    scrollView.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true

Кроме того, я бы не стал рассчитывать, что ограничения разрешаются в правильном фрейме немедленно, вы, вероятно, захотите также установить dateLbl с ограничениями или установить фреймы в viewDidLayoutSubviews, когда вы знаете, что scrollView имеет правильный фрейм.

...