Благодаря системе удаления табличного представления, когда ячейка не видна, она не загружается. Таким образом, табличное представление не будет анимировать изменение, если оно не отображается на экране.
Здесь я вижу 2 варианта:
Прокрутка до анимированной ячейки перед обновлением ее высоты
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let animatedIndexPath = ...
let visibleRows = tableView.indexPathsForVisibleRows ?? []
if visibleRows.contains(animatedIndexPath) {
self.tableView.reloadRows(at: [animatedIndexPath], with: .automatic)
} else {
UIView.animate(withDuration: 0.3, animations: {
self.tableView.scrollToRow(at: animatedIndexPath, at: .none, animated: false)
}) { _ in
self.tableView.reloadRows(at: [animatedIndexPath], with: .automatic)
}
}
}
Регулировка смещения содержимого, когда ячейка обновлено
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let animatedIndexPath = ...
let visibleRows = tableView.indexPathsForVisibleRows ?? []
if visibleRows.contains(animatedIndexPath) {
self.tableView.reloadRows(at: [animatedIndexPath], with: .automatic)
} else {
let offset = tableView.contentOffset
tableView.reloadData()
tableView.layoutIfNeeded() // forces the new offset computation
tableView.setContentOffset(offset, animated: true)
}
}
(могут возникнуть некоторые проблемы из-за динамического вычисления высоты табличного представления, отключите его tableView.estimatedRowHeight = 0
)
Элементы управления ASP.NET Telerik действительно хороши.
Они предоставляют элементы управления ASP.NET AJAX и ASP.NET MVC.
Календарь: http://demos.telerik.com/aspnet-ajax/calendar/examples/overview/defaultcs.aspx
Планировщик: http : //demos.telerik.com/aspnet-ajax/scheduler/examples/overview/defaultcs.aspx
При реальном поиске лучшего, необходимо видеть шахту ;-)
DayPilot, облегченный (открытый исходный код):
http://www.daypilot.org/demo/Lite/
(Коммерческий) DayPilot Pro:
Проверьте WebSchedule ComponentOne и WebCalendar Живая демонстрация: http://helpcentral.componentone.com/c1webexamples/
DevExpress в настоящее время имеют 60 средств управления бесплатно:
http://www.microsoft.com/web/content.aspx?id=15-helpful-in-browser-web-development-tools
Я не уверен, включен ли Календарь с ними, но они действительно имеют один, и можно испытать его.
Anthony, www.codersbarn.com :-)
попробуйте web2cal . Это очень хорошо. Красиво смотрится и легко настраивается
Расписание и календарь ComponentOne очень просты в использовании. Их можно поместить на форму и соединить друг с другом с помощью одного свойства. Кроме того, планировщик поставляется со встроенным хранилищем данных xml, поэтому для его работы не требуется никакого кода!
Посмотрите этот пример планировщика и календаря
В зависимости от того, что вы пытаетесь сделать, BaseCalendar может сработать. Планировщика в нем нет, но он легко настраивается. В проект включено несколько демоверсий.