Han*_*One 3 animation uitableview shake caanimation ios
如何让UITableViewCell从左侧向右侧摇晃?
我希望用户知道"这个动作是不可能的"!
这是我的解决方案:
CGPoint position = cell.center;
UIBezierPath *path = [UIBezierPath bezierPath];
[path moveToPoint:CGPointMake(position.x, position.y)];
[path addLineToPoint:CGPointMake(position.x-20, position.y)];
[path addLineToPoint:CGPointMake(position.x+20, position.y)];
[path addLineToPoint:CGPointMake(position.x-20, position.y)];
[path addLineToPoint:CGPointMake(position.x+20, position.y)];
[path addLineToPoint:CGPointMake(position.x, position.y)];
CAKeyframeAnimation *positionAnimation = [CAKeyframeAnimation animationWithKeyPath:@"position"];
positionAnimation.path = path.CGPath;
positionAnimation.duration = .5f;
positionAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];
[CATransaction begin];
[cell.layer addAnimation:positionAnimation forKey:nil];
[CATransaction commit];
Run Code Online (Sandbox Code Playgroud)
玩得开心!
谢谢汉斯一号!这里是 Swift 和扩展形式,UITableViewCell可以选择持续时间和路径长度。
import UIKit
import QuartzCore
extension UITableViewCell {
func shake(duration: CFTimeInterval = 0.3, pathLength: CGFloat = 15) {
let position: CGPoint = self.center
let path: UIBezierPath = UIBezierPath()
path.moveToPoint(CGPointMake(position.x, position.y))
path.addLineToPoint(CGPointMake(position.x-pathLength, position.y))
path.addLineToPoint(CGPointMake(position.x+pathLength, position.y))
path.addLineToPoint(CGPointMake(position.x-pathLength, position.y))
path.addLineToPoint(CGPointMake(position.x+pathLength, position.y))
path.addLineToPoint(CGPointMake(position.x, position.y))
let positionAnimation = CAKeyframeAnimation(keyPath: "position")
positionAnimation.path = path.CGPath
positionAnimation.duration = duration
positionAnimation.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionLinear)
CATransaction.begin()
self.layer.addAnimation(positionAnimation, forKey: nil)
CATransaction.commit()
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1280 次 |
| 最近记录: |