Как удалить ограничение, которое добавлено программно - PullRequest
0 голосов
/ 01 марта 2019

Как удалить это ограничение программно.Пожалуйста, помогите

cell.textView.addConstraint(NSLayoutConstraint(item: cell.textView, attribute: .height, relatedBy: .greaterThanOrEqual,
                                                           toItem: nil, attribute: .notAnAttribute, multiplier: 1.0, constant: 54))

, чтобы код добавлялся в табличные ячейки. Я хочу удалить, когда клавиатура скрывается.

Ответы [ 2 ]

0 голосов
/ 01 марта 2019
var constraint = NSLayoutConstraint(item: cell.textView, attribute: .height, relatedBy: .greaterThanOrEqual,
                                                           toItem: nil, attribute: .notAnAttribute, multiplier: 1.0, constant: 54)

constraint.isActive = false
0 голосов
/ 01 марта 2019

Так что, кажется, вы хотите удалить только это одно ограничение, не мешая стандартным ограничениям.Самым простым способом, конечно, было бы просто сохранить ссылку на это ограничение и отключить его.

let constraint = NSLayoutConstraint(item: cell.textView, 
                               attribute: .height, 
                               relatedBy: .greaterThanOrEqual, 
                                  toItem: nil, 
                               attribute: .notAnAttribute,
                              multiplier: 1.0, constant: 54)
cell.textView.addConstraint(constraint)
strongReferenceToConstraint = constraint

/// somewhere else 

cell.textView.removeConstraint(strongReferenceToConstraint)

Но если вы не можете сохранить ссылку на него, или по какой-то причине он вам недоступен, вы можете попробовать перебрать все ограничения этого представления и найти его на height, проверивего firstAttribute свойство

for constraint in cell.textView.constraints
{
    if constraint.firstAttribute == .height
    {
        constraint.isActive = false
        break
    }
}
...