停靠动画在iOS上面实现起来实际上是非常简单的
OC中代码:
-(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
//设置Cell的动画效果为3D效果
cell.layer.transform = CATransform3DMakeTranslation(0, 100, 1);
//最终动画形式展示
[UIView animateWithDuration:0.5 animations:^{
cell.layer.transform = CATransform3DIdentity;
}];
}
友情提醒:这样做的话在向上拉的时候停靠动画是开始时cell间距大,结束时cell 间距变为正常.但是向下拉的时候,开始间距小,结束时cell间距变为正常,如果希望达到跟向下时候一样的效果,需要判断当前是向上还是向下拉的手势.如果向下,y=100,如果向上y=-100我目前的做法是设置了一个oldoffsetY的属性,判断当前的偏移量跟这个属性的差值来决定y值设为多少.
swift中代码
func collectionView(collectionView: UICollectionView, willDisplayCell cell: UICollectionViewCell, forItemAtIndexPath indexPath: NSIndexPath) {
if indexPath.section == 0 && (indexPath.row == 0 || indexPath.row == 1)
{ return
}
if isAnimation {
startAnimation(cell, offsetY: 80, duration: 1.0)
}
}
private func startAnimation(view: UIView, offsetY: CGFloat, duration: NSTimeInterval) {
view.transform = CGAffineTransformMakeTranslation(0, offsetY)
UIView.animateWithDuration(duration, animations:
{ () -> Void in view.transform = CGAffineTransformIdentity
})
}
网友评论