Добавление представления приводит к обновлению ограничений в раскадровке - PullRequest
0 голосов
/ 28 февраля 2020

Я создал UIScrollView с его ограничениями, установленными в раскадровке, но иногда я перемещаю UIScrollView в другое положение во время выполнения.

Моя проблема возникает, когда я программно создаю пользовательский UIView и добавляю его в основной UIView. Мои ограничения будут обновлены, и если мой UIScrollView не будет находиться в том же месте, он будет перемещен в настройку раскадровки.

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

  let menu = UIView()
  menu.frame.size = CGSize(width: 210, height: 80)
  menu.center = view.center
  view.addSubview(menu)

Мой UIScrollView вернется к нажатию на экран. Я пытаюсь это, но это не сработало:

  myScrollView.constraints.first?.isActive = false

1 Ответ

1 голос
/ 28 февраля 2020

При использовании автоматического макета и ограничений вы не можете изменять кадры, явно задав view.frame.

Если вы попытаетесь это сделать, то при следующем обновлении пользовательского интерфейса автоматический макет сбросит представление на его ограничения.

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

Например, если ваше представление прокрутки ограничено на 20 пунктов от верхней части представления, и вы хотите переместить его вниз на 50 пунктов во время выполнения ...

  • создать IBOutlet для верхнего ограничения
  • в коде, используйте myTopConstraint.constant = 70.0
...