我正在尝试在呈现视图时设置我的超级视图的框架,我使用的代码是
navigationController.modalPresentationStyle = UIModalPresentationPageSheet;
navigationController.view.superview.frame = CGRectMake(32, 20, 1024-(32*2), 748);
[[self navigationController] presentModalViewController:navigationController animated:YES];
代码在OS6中运行良好。但是当来到OS7时它无法正常工作。
答案 0 :(得分:2)
此方法已在iOS 7中弃用。
- (void)presentModalViewController:(UIViewController *)modalViewController animated:(BOOL)animated NS_DEPRECATED_IOS(2_0, 6_0);
使用以下内容:
- (void)presentViewController:(UIViewController *)viewControllerToPresent animated: (BOOL)flag completion:(void (^)(void))completion NS_AVAILABLE_IOS(5_0);
答案 1 :(得分:1)
如果它在iOS 6中运行则是偶然的。您在呈现模态视图控制器时依赖于iOS使用的私有视图层次结构,并且您刚刚发现了为什么这是一个坏主意。它可以而且确实在没有警告或文档的情况下进行更改。另请参阅iOS 6和7之间的UITableView的视图层次结构。
如果你想制作自己风格的呈现视图控制器,最安全的做法是从头开始编写,而不是劫持现有的一个。尝试使用自定义演示样式并编写transition delegate。
答案 2 :(得分:0)
好的,我找到了解决方案。
BOOL ios7 = [UIDeviceHardware isOS7Device];
if(ios7){
navigationController.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
}
现在它运作正常。 :)