я создавал те констрейнты, которые надо менять, и затем их уже активировал/деактивировал.. //... private var contentBottomConstraint = NSLayoutConstraint() //... func configureSubviews() { //... self.contentBottomConstraint = self.contentView.bottomAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.bottomAnchor) NSLayoutConstraint.activate([ //... self.contentBottomConstraint, //... ]) } @objc func adjustForKeyboard(notification: Notification) { guard let keyboardValue = notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey] as? NSValue else { return } let keyboardScreenEndFrame = keyboardValue.cgRectValue let keyboardViewEndFrame = self.view.convert(keyboardScreenEndFrame, from: self.view.window) if notification.name == UIResponder.keyboardWillHideNotification { self.contentBottomConstraint.isActive = false self.contentBottomConstraint = self.contentView.bottomAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.bottomAnchor) self.contentBottomConstraint.isActive = true } else { self.contentBottomConstraint.isActive = false let ajustionConstant = keyboardViewEndFrame.height - self.view.safeAreaInsets.bottom self.contentBottomConstraint = self.contentView.bottomAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.bottomAnchor, constant: -ajustionConstant) self.contentBottomConstraint.isActive = true } }
Разве есть разница в ручной деактивации констрейнтов и через NSLayoutConstraint.deactivate? Мне кажется оба варианта должны работать
нет, но тут разница, что ты работаешь с конкретным экземпляром
Обсуждают сегодня