这是一个非常基本的问题,但这是我第一次在应用程序中做任何动画。
我有下面的场景。视图1与一些文本显示,并在某一时间,其他视图2和3应动画从顶部向下推到第一个视图。
目前,我正在使用自动布局的故事板。当我想要动画或者继续使用它的时候,我应该停止这样做吗?是否必须以编程方式添加/更新约束或显示/隐藏视图?
我试过表演[隐藏],但它似乎对我没有用。在尝试时,我添加了所有视图(右图片),然后将视图2和3设置为隐藏,希望底部视图自动上升,但这不起作用.
我没有尝试手动设置约束,因为我以前从未这样做过。我对该如何做有基本的了解,但我想首先知道这是否可行?

发布于 2015-09-02 15:43:55
我已经建立了一个非常基本的项目来说明我的答案。你可以找到它,这里。几乎所有的事情都是用IB做的。左边的红色视图被固定在屏幕顶部,此约束连接到ViewController.m中的IBOutlet。其他视图的位置取决于左红色视图的位置。我们两次更改此约束的常量--在VC加载但尚未出现在屏幕上后,第一次将红色视图移出屏幕。第二次,当按钮被按下,我们改变约束,它是什么,并强制布局与动画。差不多就是这样。

#import "ViewController.h"
@interface ViewController ()
@property (weak, nonatomic) IBOutlet NSLayoutConstraint *redViewTopConstraint;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.redViewTopConstraint.constant = - ([UIScreen mainScreen].bounds.size.width * 0.3 + 20);
// Do any additional setup after loading the view, typically from a nib.
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (IBAction)action:(id)sender {
self.redViewTopConstraint.constant = 20;
[UIView animateWithDuration:0.5f delay:0 usingSpringWithDamping:0.65f initialSpringVelocity:0 options:UIViewAnimationOptionCurveEaseOut | UIViewAnimationOptionBeginFromCurrentState animations:^{
[self.view layoutIfNeeded];
} completion:nil];
}
@end

https://stackoverflow.com/questions/32318713
复制相似问题