Я использую SnapKit и не могу найти чистый способ обновления смещения ограничения. Это простой вид загрузочной панели, внутренний вид которого (expiredTime) должен заполнить родительский (слева направо) в соответствии с процентом.Обновление смещения смещения SnapKit
Я создаю ограничение в awakeFromNib
заказного UIView
self.expiredTime.snp.makeConstraints { (make) in
make.left.equalTo(self)
make.top.equalTo(self)
make.bottom.equalTo(self)
self.constraintWidth = make.width.equalTo(self).constraint
}
setNeedsUpdateConstraints()
тогда, когда время обновляется я называю setNeedsUpdateConstraints()
который будет запускать updateConstraints по умолчанию(), который был перегружен, как яблочные намек:
не работает: (вид expiredTime всегда вяжется с родительской точки зрения)
override func updateConstraints() {
let offset = self.frame.width * CGFloat(percentage)
self.expiredTime.snp.updateConstraints { (make) in
make.width.equalTo(self).offset(offset).constraint
}
super.updateConstraints()
}
Это также не работает:
override func updateConstraints() {
let offset = self.frame.width * CGFloat(percentage)
self.constraintWidth?.update(offset: offset)
super.updateConstraints()
}
Перестройка все ограничения работает, но я хотел бы избежать этого
override func updateConstraints() {
self.expiredTime.snp.remakeConstraints() { (make) in
make.left.equalTo(self)
make.top.equalTo(self)
make.bottom.equalTo(self)
self.constraintWidth = make.width.equalTo(self).multipliedBy(self.percentage).constraint
}
super.updateConstraints()
}
Ahh хорошо, так что «смещение» не на самом деле смещение, а скорее значение. Проклятая номенклатура. Спасибо. – jalone