我正试图在我的iOS应用程序中创建一项动画,在新视图从左侧滑入屏幕时,主视图向右滑动以为其腾出空间。主视图是视图控制器顶部视图的子视图,而滑入的侧边视图则从单独的xib文件加载。
如果相关的话,这里是我加载侧边视图的代码,调用自我的主视图控制器的viewDidLoad方法:
这似乎很简单。但不知什么原因,只有sideView动画——mainView没有移动到任何地方。更令人困惑的是,如果我注释掉动画块中移动sideView的行,那么mainView的动画就开始工作了。
有人知道是什么问题吗?从我阅读的所有搜索和文档来看,我所做的应该正常工作。我认为这将是一个简单的动画,却变成了数小时的挫折。任何帮助都将不胜感激!
编辑:
根据Guo Luchuan的建议,我尝试对两个UIView的不同属性进行动画。大多数都得到了相同的结果,尽管对它们的转换属性进行动画几乎有效。在这种情况下,两个UIView都进行了动画,但mainView只是做错了事情:它的动画始于不同的位置,并以错误的位置结束。看起来它正在执行我指示它执行的平移,但从这个表达式计算的位置开始:
如果相关的话,这里是我加载侧边视图的代码,调用自我的主视图控制器的viewDidLoad方法:
sideViewController = [[SideViewController alloc] init];
[sideViewController loadView];
sideView = sideViewController.topView;
[self.view addSubview:sideView];
sideView.hidden = YES;
sideView.frame = CGRectMake(-200, 0, 200, 460);
下面是用于动画两个视图的代码:
sideView.hidden = NO;
[UIView animateWithDuration:0.25f
animations:^{
mainView.frame = CGRectMake(200, 0, 320, 460);
sideView.frame = CGRectMake(0, 0, 200, 460);
}];
这似乎很简单。但不知什么原因,只有sideView动画——mainView没有移动到任何地方。更令人困惑的是,如果我注释掉动画块中移动sideView的行,那么mainView的动画就开始工作了。
有人知道是什么问题吗?从我阅读的所有搜索和文档来看,我所做的应该正常工作。我认为这将是一个简单的动画,却变成了数小时的挫折。任何帮助都将不胜感激!
编辑:
根据Guo Luchuan的建议,我尝试对两个UIView的不同属性进行动画。大多数都得到了相同的结果,尽管对它们的转换属性进行动画几乎有效。在这种情况下,两个UIView都进行了动画,但mainView只是做错了事情:它的动画始于不同的位置,并以错误的位置结束。看起来它正在执行我指示它执行的平移,但从这个表达式计算的位置开始:
starting_point - 0.5 * total_translation
意思是它在此结束:
starting_point + 0.5 * total_translation
然而,sideView的动画效果是正确的。
这真是令人恼火。我没想到在iOS上执行动画会如此不稳定。我接下来要尝试的是使用CABasicAnimation,尽管我很不高兴必须为了这么简单的事情而尝试使用这样一个低级别的API。