0

在 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"];

所以我想知道如何让按钮在动画后不消失,或者是否有更好的方法来创建动画。

4

1 回答 1

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;
 }

希望能帮助到你。

于 2013-04-23T08:29:34.090 回答