Sha*_*awn 0 animation objective-c interface-builder xib ios
在iOS开发中使用xib时,我一直在阅读一些关于动画的帖子.我读到的大部分内容都是不对帧进行动画处理,而是对约束进行动画处理.我已经限制标签在启动时位于视图的中心,然后我将其设置为动画并显示登录文本字段(您看到的典型登录信息).

我这样做了动画框架,当然,当我点击文本字段时,视图将原始约束应用于"我的标题"标签并将其推回到其原始中心位置.

如何删除居中约束并添加新约束以从编程方式从顶部强制空间?
这是我的动画代码:
[UIView animateWithDuration: 0.8
delay: 1.0
usingSpringWithDamping: 0.8
initialSpringVelocity: 0.5
options: UIViewAnimationOptionCurveEaseOut
animations: ^{
self.titleLabel.frame = CGRectOffset(self.titleLabel.frame, 0, -self.view.frame.size.height/4.5);
} completion: ^(BOOL finished) {
if (finished)
{
[UIView animateWithDuration: 0.8
delay: 0.3
usingSpringWithDamping: 0.8
initialSpringVelocity: 0.5
options: UIViewAnimationOptionCurveEaseInOut
animations: ^{
self.userIdTextField.alpha = 1.0;
self.userPasswordTextField.alpha = 1.0;
self.loginButton.alpha = 1.0;
} completion: ^(BOOL finished) {
}];
}
}];
Run Code Online (Sandbox Code Playgroud)
小智 5
这比你想象的要容易得多.您可以为约束创建IBOutlet并更改其常量值,而不是删除和重新添加.
在Storyboard中,控制 - 将约束拖动到视图控制器的源代码中.这将为您提供创建指向约束的IBOutlet的选项.
然后,您在UIView动画中所要做的就是更改约束常量属性的值.
以下是自动布局约束插座的示例:
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *myViewHeight;
Run Code Online (Sandbox Code Playgroud)
以下是通过更改约束常量来更改视图高度的动画代码示例:
[UIView animateWithDuration:0.5
delay: 0.0
options: UIViewAnimationOptionTransitionNone
animations:^{
_myViewHeight.constant += 20.0f;
[self.view layoutIfNeeded];
}
completion:nil];
Run Code Online (Sandbox Code Playgroud)
这可能不是您想要做的,但您应该能够以这种方式修改约束以完成工作.