在iOS开发中使用xibs时,我一直在阅读一些关于动画的帖子。我读到的大部分内容都是不对框架进行动画处理,而是对约束进行动画处理。我已经限制了标签在启动时位于视图的中心,然后我将其设置为动画并显示登录文本字段(您看到的典型登录信息)。
我这样做了动画框架,当然,当我点击文本字段时,视图将原始约束应用于"我的标题"标签并将其推回原来的中心位置。
如何删除居中约束并添加新约束以通过编程方式从顶部强制空格?
这是我的动画代码:
[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) {
}];
}
}];
答案 0 :(得分:5)
这比你想象的要容易得多。您可以为约束创建IBOutlet并更改其常量值,而不是删除和重新添加。
在Storyboard中,控制 - 将约束拖动到视图控制器的源代码中。这将为您提供创建指向约束的IBOutlet的选项。
然后,您在UIView动画中所要做的就是更改约束常量属性的值。
以下是自动布局约束插座的示例:
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *myViewHeight;
以下是通过更改约束常量来更改视图高度的动画代码示例:
[UIView animateWithDuration:0.5
delay: 0.0
options: UIViewAnimationOptionTransitionNone
animations:^{
_myViewHeight.constant += 20.0f;
[self.view layoutIfNeeded];
}
completion:nil];
这可能不是您想要做的,但您应该能够以这种方式修改约束以完成工作。
答案 1 :(得分:0)
不得不将我的约束结构不同。而不是中心约束我约束它与中心Y的距离,使IBOutlet成为该约束,然后动画化。