在iOS邮件应用程序中,如果您转到收件箱并在项目上滑动,则存档按钮会从右向左显示(并且当时消失的方式)。我试图在我的应用程序中得到这种行为,我接近这个的方式是动画按钮的遮罩层并从右向左移动它。我在这里遇到的问题是,一旦动画结束,按钮就会消失。
//Create Mask Layer
CALayer *maskLayer = [CALayer layer];
maskLayer.frame = CGRectMake(cell.deleteButton.frame.size.width,0,cell.deleteButton.frame.size.width,cell.deleteButton.frame.size.height);
maskLayer.backgroundColor = [UIColor whiteColor].CGColor;
cell.deleteButton.layer.mask = maskLayer;
// Setting the animation
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"position.x"];
animation.byValue = [NSNumber numberWithFloat:-cell.deleteButton.frame.size.width];
animation.duration = 0.4f;
[cell.deleteButton.layer.mask addAnimation:animation forKey:@"maskAnimation"];
所以我想知道如何在动画之后让按钮不消失,或者是否有更好的方法来创建动画。
答案 0 :(得分:1)
使用您的实现,您将在动画完成后使用动画移动蒙版,它将保留蒙版的最后位置。这就是按钮被隐藏的原因。
您需要将代理人设置为您的班级:
animation.delegate = self;
然后在委托方法中实现以下代码:
-(void) animationDidStop:(CAAnimation *)anim finished:(BOOL)flag
{
CALayer *maskLayer = [CALayer layer];
maskLayer.frame = CGRectMake(0,0,self.btnLogin.frame.size.width,
self.btnLogin.frame.size.height);
maskLayer.backgroundColor = [UIColor whiteColor].CGColor;
self.btnLogin.layer.mask = maskLayer;
}
希望它有所帮助。