У меня есть подкласс UITableviewCell
, который содержит UIButton
, который помещен за пределы экрана (справа) с горизонтальным пространственным ограничением автолоката до его надзора -312.UIView.animateWithDuration не работает в UITableviewCell
Теперь я хочу анимировать это ограничение до значения -8, когда ячейка выбрана.
Я создал выход для этого ограничения в классе клеток, и я попытался оживить это ограничение с помощью следующего кода:
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let cell = tableView.dequeueReusableCellWithIdentifier("VariationsTableViewCell", forIndexPath: indexPath) as! VariationsCell
UIView.animateWithDuration(1.0, delay: 0.0, options: .CurveEaseOut, animations: {
cell.buttonRightSideConstraint.constant = -8
}, completion: { finished in
println("Button revealed!")
})
}
К сожалению, это не работает. Если я перезагружу tableview с помощью .reloadData()
, отобразится кнопка, которая сообщает мне, что ограничение Autolayout обновляется, но анимация не запускается.
Я бы не рекомендовал использовать автоматическую компоновку на ячейках таблицы. Всякий раз, когда вы называете 'layoutIfNeeded' в вашем представлении контроллера/таблицы, ваша ячейка ** может ** показывать какое-то нежелательное поведение. – Eendje
self.layoutIfNeeded приводит к ошибке «ViewController» не имеет члена с именем «layoutIfNeeded». Вы имели в виду cell.layoutIfNeeded()? Я уже пробовал это, и он не работает. – Mars
Да, извините, забыли добавить это. Также, если вы используете автоматическую компоновку в ячейке, вы должны добавить subviews в 'contentView'. – Eendje