【发布时间】:2018-01-22 10:38:15
【问题描述】:
我正在努力实现这个效果:
https://cdn.dribbble.com/users/124059/screenshots/3727352/400.gif
为此我正在做:
override func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
let cell = tableView.dequeueReusableCell(withIdentifier: "CardCell", for: indexPath) as! CardTableViewCell
UIView.animate(withDuration: 0.5, delay: 0.3, usingSpringWithDamping: 0.1, initialSpringVelocity: 0.5, options: .curveEaseInOut, animations: {
cell.coverImageView.transform = CGAffineTransform(scaleX: 0.7, y: 0.7)
}, completion: nil)
}
但此代码调整 UIImageView 框架的大小,而不是 UIImageView 内部的图像。
如何改进我的代码?
【问题讨论】:
-
您需要一个持有它的视图来剪辑/屏蔽 imageView。然后将变换设置为 cell.coverImageView.transform = CGAffineTransform(scaleX: 1.5, y:1.5) 并在动画中执行 cell.coverImageView.transform = .identity
-
你可能会在 willDisplayCell 中放大它,但你可能必须检查它是否在 scrollviewDidScrolll 的屏幕上才能调用动画
-
@agibson007 谢谢!但是我怎样才能将
let cell = tableView.dequeueReusableCell(withIdentifier: "CardCell", for: indexPath) as! CardTableViewCell部分与didScroll部分结合起来呢?我现在如何从哪个 indexPath.row 缩小哪个图像? -
你必须抓取所有可见的单元格并找到视图中心的那个
-
@agibson007 我再次得到 UIImageView 框架的转换,而不是 UIImage =/
标签: ios iphone uitableview animation uiimageview