我有一个名为“nameLabel”的UILabel,我把它放在一个动画块中,以便发生这种情况:
_nameLabel.alpha = 1;
CGAffineTransform translate = CGAffineTransformMakeTranslation(50, 50);
_nameLabel.transform = translate;
我认为将UILabel动画到我指定的位置,但它只是从上面的位置动画到我在Interface Builder中拥有它的位置。这里有什么帮助吗?
答案 0 :(得分:1)
你可以发布动画块和其他相关代码吗?我不确定CGAffineTransformMakeTranslation
对标签的作用,但是如果你想为框架位置设置动画,你可以使用它:
CGRect frame = _nameLabel.frame;
frame.origin.y = 100; //Desired height, origin.x can be modified as well.
//You can also change the frame size here but it wont work on UILabels, you will need `CGAffineTransformScale` for that.
[UIView animateWithDuration: 1.5
delay:0.0
options:UIViewAnimationCurveEaseInOut | UIViewAnimationOptionBeginFromCurrentState
animations:^ {
[_nameLabel setFrame:frame];
}
completion:^ (BOOL finished) {
}];
编辑:另一种方式:
CGRect frame = _nameLabel.frame;
frame.origin.y = 100;
[UIView beginAnimations:nil context:nil];
[UIView setAnimationBeginsFromCurrentState:YES];
[UIView setAnimationDuration:0.5];
[_nameLabel setFrame: newFrame];
[UIView commitAnimations];
当前状态可能是标签的当前位置,首先尝试但如果没有任何反应,请删除UIViewAnimationOptionBeginFromCurrentState
或将标签的框架设置为动画前的其他位置,并将其移至其初始位置(一个在xib文件中)在动画块中的位置,它的调用。
答案 1 :(得分:1)
请注意,因为Autolayout会导致很多问题。
尝试取消选择“使用Autolayout”
它解决了尝试翻译对象的所有问题。