动画iOS xibs的约束

时间:2014-09-25 18:26:05

标签: ios objective-c animation interface-builder xib

在iOS开发中使用xibs时,我一直在阅读一些关于动画的帖子。我读到的大部分内容都是不对框架进行动画处理,而是对约束进行动画处理。我已经限制了标签在启动时位于视图的中心,然后我将其设置为动画并显示登录文本字段(您看到的典型登录信息)。

enter image description here

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

enter image description here

如何删除居中约束并添加新约束以通过编程方式从顶部强制空格?

这是我的动画代码:

[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) {
                                          }];
                     }
                 }];

2 个答案:

答案 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成为该约束,然后动画化。