如何让我的控制器过渡动画在纵向和横向都能正常工作?

时间:2013-07-22 20:24:01

标签: ios objective-c ios6 uiviewanimation

我有一个UICollectionView单元格。当用户选择它时,我正在尝试将自定义导航控制器动画发送到下一个viewController视图。

基本上我是

  1. 将新视图控制器的视图添加为子视图
  2. 将新视图的框架设置得尽可能小(即0.01,0.01)
  3. 将新视图框的中心设置为所选collectionView单元格的中心
  4. 然后运行一个动画块,将新视图的帧更改为[[UIScreen mainScreen] bounds]。
  5. 最后onComplete,推送新的viewController
  6. 所以我可以看到动画从单元格框架内开始(尽管它不是很中心),并且它会扩展到屏幕纵向尺寸,即使单元格框架位于屏幕的底角;这很好。

    问题出在横向模式,尺寸仍在扩展到纵向规格。自旋转以来,[[UIScreen mainScreen]边界]的值是否应该更改?

    这是代码

    DetailsViewController *details = [[DetailsViewController alloc] initWithItem:item];
    
    [[self view] addSubview:details.view];
    details.view.frame=CGRectMake(0, 0, 0.01, 0.01);
    details.view.center = cell.center;
    
    [UIView animateWithDuration:[duration floatValue] animations:^{
        details.view.frame = [[UIScreen mainScreen] bounds];
    }
     completion:^(BOOL finished){
         [[self navigationController] pushViewController:details animated:NO];
     }];
    

1 个答案:

答案 0 :(得分:0)

[[UIScreen mainScreen] bounds]与方向无关。请考虑使用superview的框架。