0

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

基本上我是

  1. 将新视图控制器的视图添加为子视图
  2. 将新视图的框架设置为尽可能小,(即0.01、0.01)
  3. 将新视图框架的中心设置为所选 collectionView 单元格的中心
  4. 然后运行一个动画块,将新视图的帧更改为等于 [[UIScreen mainScreen] bounds]。
  5. 最后 onComplete,推送新的 viewController

所以我可以看到动画从单元格框架内开始(虽然它不是完全居中),并且它扩展到屏幕纵向尺寸,即使单元格框架位于屏幕的底角;这很好。

问题在于横向模式,尺寸仍在扩展到纵向规格。自旋转以来, [[UIScreen mainScreen] bounds] 的值不应该发生变化吗?

这是代码

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];
 }];
4

1 回答 1

0

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

于 2013-07-22T21:53:09.823 回答