gpt4 book ai didi

ios - 当用户用手指拾取时的动画表格 View 单元格(Swift 3)

转载 作者:行者123 更新时间:2023-11-30 12:01:23 24 4
gpt4 key购买 nike

我正在尝试制作这个动画 enter image description here

所以我希望当用户用手指拿起单元格时会变小,然后当它停止按下时返回到原始大小,重要的是我没有使用自定义单元格而是使用默认的 UITableViewCell,这里是我尝试与之一起制作动画的代码(在观看旧问题和教程之后)

 var originalCellSize: CGRect!  

func tableView(_ tableView: UITableView, didHighlightRowAt indexPath: IndexPath) {

print("I'm Highlighted at \(indexPath.section)")


guard let cell = tableView.cellForRow(at: indexPath) else {
return
}

originalCellSize = cell.frame
UIView.animate(withDuration: 0.1, animations: {
cell.frame = CGRect(x: cell.frame.origin.x + 20, y: cell.frame.origin.y, width: cell.frame.width - 40, height: cell.frame.height)
})
}


func tableView(_ tableView: UITableView, didUnhighlightRowAt indexPath: IndexPath) {

guard let cell = tableView.cellForRow(at: indexPath) else {
return
}

UIView.animate(withDuration: 0.1, animations: {
cell.frame = CGRect(x: 0, y: self.originalCellSize.origin.y, width: self.view.bounds.width, height: 180)
})

originalCellSize = .zero
}

我不知道为什么,但出了点问题,动画不起作用,有人可以帮助我吗(也有可能在按下单元格后,它会以明确的方式改变位置)

最佳答案

不要直接操作UITableViewCell的框架。使用它的 transform 属性。同样:

突出显示/选择时缩小单元格。

UIView.animate(withDuration: 0.3) {
cell.transform = CGAffineTransform(scaleX: 0.8, y: 0.8)
cell.layoutIfNeeded()
}

恢复正常:

UIView.animate(withDuration: 0.3) {
cell.transform = CGAffineTransform.identity
cell.layoutIfNeeded()
}

不要忘记在动画 block 之前和内部(在分配 CGAffineTransform 之后)调用 cell.layoutIfNeeded()

关于ios - 当用户用手指拾取时的动画表格 View 单元格(Swift 3),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47180730/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com