В ячейке табличного представления у меня есть две кнопки (кнопка «Нравится» и «Не нравится»). При нажатии любой кнопки ячейка будет удалена с анимацией. Но я испытываю неожиданную анимацию. Есть ли рекомендованная сторонняя библиотека? Еще одна вещь, для тех двух кнопок, которые я хочу, одна должна анимироваться слева направо, а другая справа налево.
class TipInCellAnimator {
class func animate(cell:UITableViewCell) {
let view = cell.contentView
let rotationDegrees: CGFloat = -150.0
let rotationRadians: CGFloat = rotationDegrees *
(CGFloat(Double.pi)/180.0)
let offset = CGPoint(x: -20, y: -20)
var startTransform = CATransform3DIdentity
startTransform = CATransform3DRotate(CATransform3DIdentity,
rotationRadians, -45.0, -45.0, 1.0)
startTransform = CATransform3DTranslate(startTransform,
offset.x, offset.y, 0.0) // 4
view.layer.transform = startTransform
view.layer.opacity = 0.4
UIView.animate(withDuration: 8.0) {
view.layer.transform = CATransform3DIdentity
view.layer.opacity = 1
}
}
}
@objc func userLikeButtonWasTappaed(sender: UIButton){
UIView.animate(withDuration: 0.6,
animations: {
sender.transform = CGAffineTransform(scaleX: 0.6, y: 0.6)
},
completion: { _ in
UIView.animate(withDuration: 0.6) {
sender.transform = CGAffineTransform.identity
}
})
guard let indexPath = tableView.indexPathForRow(at: sender.convert(sender.frame.origin, to: tableView)) else {
return
}
let cell = tableView.cellForRow(at: indexPath) as? MatchingUsersTVCell
let tag = sender.tag
let userid = userIdArray[tag]
//Remove the user data from the array for the perticular indexpath
totalScoreArray.remove(at: tag)
fullAdressArray.remove(at: tag)
modelArray.remove(at: tag)
userIdArray.remove(at: tag)
modelNameArray.remove(at: tag)
self.tableView.deleteRows(at: [indexPath], with: .right)
let uid: Int = UserDefaults.standard.value(forKey: "User_Id") as! Int
let accessToken: String = UserDefaults.standard.value(forKey: "access_token") as! String
apiRequest.likeTheUser(uid, userid, accessToken) { (likedUser) in
}
}
func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) {
if editingStyle == .delete {
let cell = (tableView.cellForRow(at: indexPath) as? MatchingUsersTVCell)!
// your code
TipInCellAnimator.animate(cell: cell)
}
}