我在屏幕的左上角有一个小按钮,它有约束设置到位。点击此按钮时,我希望UIlabel从屏幕的右边缘展开。 UIlabel几乎占据了屏幕的宽度,高度约为8Points。它包含一行文字。在反转动画之前它将显示2秒钟,以便UILabel缩小回小按钮。我是ios动画的新手,我很困惑,因为有很多类型!我需要知道:
1)我可以用什么类型的动画技术来创造这种效果?代码会很好,但我想指出正确的研究方向。
2)我读过UILabel对动画的反应不足。以我描述的方式动画它们是否有问题?
3)UILabel中的文本(以及标签本身!)必须通过与动画同时进行的某种约束分配来适应各种屏幕尺寸。必须通过编程方式自动布局设置UILabel的大小/位置。
谢谢
更新: 我在animationWithDuration方法之前添加了这一行(注意:(10,5,....)是小按钮的位置):
_questionDisplay = [[UILabel alloc]initWithFrame:CGRectMake(10, 5, 0, 30)];
..第一个动画块中的这一行:
_questionDisplay.frame = CGRectMake(10, 5, 600, 30);
..以及以下animationWithDuration方法之后的这一行,在第一次通过NSTimer后调用3.5秒:
_questionDisplay.frame = CGRectMake(10, 5, 0, 30);
标签缩小后,将从视图中删除。
这在iPhone6 +上看起来不错,但在4s看起来不对,因为标签没有按照我需要的约束来调整大小。
答案 0 :(得分:2)
[UILabel animateWithDuration:1
animations:^{
yourView.transform = CGAffineTransformMakeScale(1.5, 1.5);
}
completion:^(BOOL finished) {
[UILabel animateWithDuration:1
animations:^{
yourView.transform = CGAffineTransformIdentity;
}];
}];
UILabel.animateWithDuration(1, animations: { () -> Void in
yourView.transform = CGAffineTransformMakeScale(1.5, 1.5)
}) { (finished: Bool) -> Void in
UILabel.animateWithDuration(1, animations: { () -> Void in
yourView.transform = CGAffineTransformIdentity
})}
答案 1 :(得分:1)
它消失了,因为你明确给出了一个尺寸。 (如果你想要多个屏幕大小正确使用等于宽度(比例)到superview 约束而不是固定宽度。在此之后,使用上面提到的方法。当你的标签出现时,它将有由于比例宽度约束导致宽度正确,动画将使其增长并缩小回原始大小。将动画块保留为空(没有明确的帧更改!) 只需更改缩放系数(目前为1.2),直到它适合您为止!
1) 2) and 3) are all handled here! The label font itself adjusts so you just need to add the animation
[UIView animateWithDuration:0.5 animations:^{
// grow the label up to 130%, using a animation of 1/2s
yourLabel.transform = CGAffineTransformMakeScale(1.2,1.2); //
} completion:^(BOOL finished) {
// When the "grow" animation is completed, go back to size 100% using another animation of 1/2s
[UIView animateWithDuration:3.5 animations:^{
yourLabel.transform = CGAffineTransformIdentity;
}];
}];