Я хочу добиться анимации, такой как Appstore, где вы нажимаете на элемент, и элемент масштабируется до меньшего размера, а затем освобождает элемент, и он возвращается к своему первоначальному размеру.
Масштабирование анимации на UIView
работает отлично.
Во-первых, если я делаю ту же анимацию масштабирования на самой UITableviewCell
, то получаю нужную анимацию, но она создает цветной фон позади, что не является желаемым результатом.
Во-вторых, если я делаю ту же анимацию на contentView
из UITableviewCell
, тогда она портит анимацию. Не то, что я ожидаю.
1.На контентеПросмотреть
func tableView(_ tableView: UITableView, didHighlightRowAt indexPath: IndexPath) {
debugPrint("did hightlight")
let cell = tableView.cellForRow(at: indexPath) as? RestaurantTVC
UIView.animate(withDuration: 0.75) {
cell?.contentView.transform = CGAffineTransform(scaleX: 0.9, y: 0.9)
}
}
func tableView(_ tableView: UITableView, didUnhighlightRowAt indexPath: IndexPath) {
debugPrint("unhightlight")
let cell = tableView.cellForRow(at: indexPath) as? RestaurantTVC
UIView.animate(withDuration: 0.3) {
cell?.contentView.transform = CGAffineTransform.identity
}
}
2. На самой ячейке
func tableView(_ tableView: UITableView, didHighlightRowAt indexPath: IndexPath) {
debugPrint("did hightlight")
let cell = tableView.cellForRow(at: indexPath) as? RestaurantTVC
UIView.animate(withDuration: 0.75) {
cell?.transform = CGAffineTransform(scaleX: 0.9, y: 0.9)
}
}
func tableView(_ tableView: UITableView, didUnhighlightRowAt indexPath: IndexPath) {
debugPrint("unhightlight")
let cell = tableView.cellForRow(at: indexPath) as? RestaurantTVC
UIView.animate(withDuration: 0.3) {
cell?.transform = CGAffineTransform.identity
}
}
3.На подпредставлении "viewShadow"
func tableView(_ tableView: UITableView, didHighlightRowAt indexPath: IndexPath) {
debugPrint("did hightlight")
let cell = tableView.cellForRow(at: indexPath) as? RestaurantTVC
UIView.animate(withDuration: 0.75) {
cell?.viewShadow.transform = CGAffineTransform(scaleX: 0.9, y: 0.9)
}
}
func tableView(_ tableView: UITableView, didUnhighlightRowAt indexPath: IndexPath) {
debugPrint("unhightlight")
let cell = tableView.cellForRow(at: indexPath) as? RestaurantTVC
UIView.animate(withDuration: 0.3) {
cell?.viewShadow.transform = CGAffineTransform.identity
}
}