我有一个UICollectionView单元格 . 当用户选择它时,我试图将自定义导航控制器动画做到下一个viewController视图 .
基本上我是
-
将新视图控制器的视图添加为子视图
-
设置新视图的框架尽可能小,(即0.01,0.01)
-
将新视图框的中心设置为所选collectionView单元格的中心
-
然后运行一个动画块,将新视图的帧更改为[[UIScreen mainScreen] bounds] .
-
,最后onComplete,推送新的viewController
所以我可以看到动画从单元格框架内开始(虽然它不是很中心),并且它会扩展到屏幕纵向尺寸,即使单元框架位于屏幕的底角;这很好 .
问题出在横向模式,尺寸仍在扩展到纵向规格 . 自旋转以来,[[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 回答
[[UIScreen mainScreen] bounds]与方向无关 . 请考虑使用superview的框架 .