Guy*_*zmo 7 iphone uiview uiviewanimation ios
我正在尝试在我的iOS应用程序中创建一个动画,其中新视图从左侧滑动到屏幕上,而主视图向右滑动以为其腾出空间.主视图是我的视图控制器顶视图的子视图,滑动的侧视图是从单独的xib文件加载的.
如果它是相关的,这是我的加载侧视图的代码,从我的主视图控制器的viewDidLoad方法调用:
sideViewController = [[SideViewController alloc] init];
[sideViewController loadView];
sideView = sideViewController.topView;
[self.view addSubview:sideView];
sideView.hidden = YES;
sideView.frame = CGRectMake(-200, 0, 200, 460);
Run Code Online (Sandbox Code Playgroud)
这是调用两个视图动画的代码:
sideView.hidden = NO;
[UIView animateWithDuration:0.25f
animations:^{
mainView.frame = CGRectMake(200, 0, 320, 460);
sideView.frame = CGRectMake(0, 0, 200, 460);
}];
Run Code Online (Sandbox Code Playgroud)
这看起来很简单.但由于某种原因,只有sideView动画 - mainView不会移动到任何地方.而且为了让事情更加混乱,如果我在移动sideView的动画块中注释掉那一行,那么mainView的动画就会开始工作.
有谁知道什么是错的?从我读过的所有搜索和文档中,我正在做的事情应该正常工作.我认为这将是一个简单的动画已经变成了几个小时的挫折.任何帮助将非常感激!
编辑:
关于郭禄川的建议,我尝试动画两个UIViews的不同属性.大多数都得到了相同的结果,尽管它们的变换属性的动画几乎都有效.在这种情况下,两个UIViews都是动画的,但是mainView只做了错误的事情:它的动画以不同的位置开始,并以错误的位置结束.看起来它正在执行我指示它做的翻译,但是从矢量计算中表示的这个位置开始:
starting_point - 0.5 * total_translation
Run Code Online (Sandbox Code Playgroud)
意思是它结束于:
starting_point + 0.5 * total_translation
Run Code Online (Sandbox Code Playgroud)
然而,sideView正确地动画.
这太可恶了.我没有意识到以这种方式在iOS上执行动画是如此破碎.我要尝试的下一件事是使用CABasicAnimation,虽然我不高兴我不得不尝试这么简单的低级API.
| 归档时间: |
|
| 查看次数: |
4405 次 |
| 最近记录: |