设置框架在OS7中不起作用

时间:2014-02-12 07:03:45

标签: objective-c ios7

我正在尝试在呈现视图时设置我的超级视图的框架,我使用的代码是

navigationController.modalPresentationStyle = UIModalPresentationPageSheet;
navigationController.view.superview.frame = CGRectMake(32, 20, 1024-(32*2), 748);
[[self navigationController] presentModalViewController:navigationController animated:YES];

代码在OS6中运行良好。但是当来到OS7时它无法正常工作。

3 个答案:

答案 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;
}

现在它运作正常。 :)