我正在玩动画片。
我有一个UIlabel,我想从左侧“飞”到中心,点击按钮后。 标签的初始字符串将位于中心。
我得到的是标签在3秒钟内移动到“原点”,然后在该位置“弹出”。
我希望UILabel在这3秒内“滑动”/动画到目标点 - 顺利进行。 alpha属性似乎也没有使动画流畅。 希望我清楚自己。谢谢。
- (IBAction)showQuestionButtonPressed:(UIButton *)sender
{
// Step to the next question
self.currentQuestionIndex++;
// Am I pas the last question?
if (self.currentQuestionIndex == [self.questions count]) {
// Go back to the first question
self.currentQuestionIndex = 0;
}
// Get the string at the index in the questions array
NSString *question = self.questions[self.currentQuestionIndex];
// Display the string in the question label
self.questionLabel.text = question;
// Reset the answer label
self.answerLabel.text = @"???";
self.questionLabel.alpha = 1.0;
// the animation animated a little bit after this point:
CGPoint origin = CGPointMake(0 - (self.questionLabel.frame.size.width/2.0), self.questionLabel.frame.origin.y);
self.questionLabel.center = origin;
[UIView animateKeyframesWithDuration:3.0 delay:0.0 options:0 animations:^{
[UIView addKeyframeWithRelativeStartTime:0.0 relativeDuration:3.0 animations:^{
self.questionLabel.alpha = 1.0;
}];
[UIView addKeyframeWithRelativeStartTime:0.0 relativeDuration:3.0 animations:^{
self.questionLabel.center = CGPointMake(self.view.center.x, self.questionLabel.frame.origin.y) ;
}];
} completion:^(BOOL finished) {
NSLog(@"finished animation");
}];
}
答案 0 :(得分:1)
relativeDuration
应该是介于0和1之间的数字。来自文档:
设置指定值动画的时间长度。这个 value必须在0到1的范围内,并指示时间量 相对于整体动画长度。如果指定值0, 您在动画块中设置的任何属性都会立即更新 指定的开始时间。如果指定非零值,则 属性在该时间内动画。例如,对于 持续时间为两秒的动画,指定持续时间 0.5导致动画持续时间为一秒。
此外,如果您使用自动布局,则无法简单地设置标签的center
属性。你必须调整你的约束。