Изменение размера uiscrollview после добавления контента программным способом - PullRequest
0 голосов
/ 12 октября 2018

У меня есть Contentview с элементами внутри Uiscrollview.Ниже приведен скриншот моей раскадровки: enter image description here

Я хочу добавить опцию для приложения, которая, если пользователь нажимает кнопку, добавляет метку в нижней части окна просмотра контента (под красным цветом).подчеркнутая метка - dzialTerminOutlet).enter image description here

Я добавляю новую метку программно, используя следующий код:

let label = UILabel()
label.translatesAutoresizingMaskIntoConstraints = false

label.backgroundColor = UIColor.orange
label.textColor = UIColor.black
label.textAlignment = NSTextAlignment.center
label.text = "test label"
contentView.addSubview(label)


label.topAnchor.constraint(equalTo: dzialTerminOutlet.bottomAnchor, constant: 10).isActive = true
label.bottomAnchor.constraint(equalTo: contentView.bottomAnchor, constant: 85.0)
label.widthAnchor.constraint(equalToConstant: 200.0)
label.heightAnchor.constraint(equalToConstant: 10.0)

Хотя размер прокрутки не изменяется.В чем здесь проблема?

Ответы [ 3 ]

0 голосов
/ 12 октября 2018

1 - Вам нужно активировать

NSLayoutConstraint.activate([
  label.topAnchor.constraint(equalTo: dzialTerminOutlet.bottomAnchor, constant: 10),
  label.bottomAnchor.constraint(equalTo: contentView.bottomAnchor, constant: 85.0),
  label.widthAnchor.constraint(equalToConstant: 200.0),
  label.heightAnchor.constraint(equalToConstant: 10.0)
])

2 - Вам нужно удалить нижнее ограничение, установленное в IB между dzialTerminOutlet и contentView, чтобы иметь возможность вставить новое и сделать scrollViewизмените размер соответственно, чтобы избежать конфликтов между ним и

label.bottomAnchor.constraint(equalTo: contentView.bottomAnchor, constant: 85.0)

, поэтому подключите его как выход и деактивируйте его или найдите в contentView нижнее ограничение и удалите его

0 голосов
/ 12 октября 2018

очень простой способ, которым я часто его использую, - это связать ограничение высоты contentView с объектом IBOutlet и обновить его значение.

@IBOutlet weak var contentViewHeight : NSLayoutConstraint!

И после добавления вашей метки:

contentViewHeight.constant += labelHeight

Не забудьте установить ограничение contentView (сверху, снизу, впереди, сзади) = 0 при просмотре с прокруткой

0 голосов
/ 12 октября 2018

Вы установили scrollView contentSize с новым размером?scrollView.contentSize = CGSize (width: self.contentView.frame.size.width, height: self.contentView.frame.size.height)

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