如何撤消“幻灯片解锁”样式文本?

时间:2013-07-02 10:42:39

标签: ios objective-c core-animation

我已经能够使用来自另一个堆栈溢出问题(iPhone "slide to unlock" animation)的代码在“幻灯片解锁”样式中创建一些文本脉冲。此刻,面具从左向右移动。我想要反转它,以便它不是从左到右脉冲,而是从右向左脉冲。

我已经摆弄了代码,试图弄清楚如何扭转它,但我所做的一切都没有让它正常工作!我认为可行的一切都没有。

非常感谢任何帮助。

self.view.layer.backgroundColor = [[UIColor blackColor] CGColor];

CGFloat textWidth = 320;
CGFloat textHeight = 76;

CALayer *textLayer = [CALayer layer];
textLayer.contents = (id)[self.MYSLIDEIMAGE.image CGImage];
textLayer.frame = CGRectMake(-69.0f, 350.0f, textWidth, textHeight);

CALayer *maskLayer = [CALayer layer];

// Mask image ends with 0.15 opacity on both sides. Set the background color of the layer
// to the same value so the layer can extend the mask image.
maskLayer.backgroundColor = [[UIColor colorWithRed:0.0f green:0.0f blue:0.0f alpha:0.1f] CGColor];
maskLayer.contents = (id)[[UIImage imageNamed:@"Mask.png"] CGImage];

// Center the mask image on twice the width of the text layer, so it starts to the left
// of the text layer and moves to its right when we translate it by width.
maskLayer.contentsGravity = kCAGravityCenter;
maskLayer.frame = CGRectMake(-textWidth +50, 0.0f, textWidth * 2, textHeight);

// Animate the mask layer's horizontal position
CABasicAnimation *maskAnim = [CABasicAnimation animationWithKeyPath:@"position.x"];
maskAnim.byValue = [NSNumber numberWithFloat:textWidth -50];
maskAnim.repeatCount = HUGE_VALF;
maskAnim.duration = 2.8f;
[maskLayer addAnimation:maskAnim forKey:@"slideAnim"];
textLayer.mask = maskLayer;
[self.view.layer addSublayer:textLayer];

1 个答案:

答案 0 :(得分:2)

目前,您正在动画中使用byValue,这意味着“从您所在的位置开始(零)并转到此位置”。相反,您可以使用fromValuetoValue来准确指定动画的开始和结束位置。通过这种方式,您可以控制方向。