iPhone - 不是全屏莫代尔

时间:2010-10-12 00:44:05

标签: iphone

在我的代码的某些部分,我正在使用此行

[[self navigationController] pushViewController:myController animated:YES];

这非常有效,可以从底部推出一个视图,覆盖当前视图,完全覆盖最后一个视图。

我想知道是否有办法让它只覆盖屏幕的一部分。比方说,只是屏幕的半个底部......

有可能吗?我试图更改控制器的视图框,但大小仍然全屏显示。

感谢。

2 个答案:

答案 0 :(得分:9)

您可以使用相同的视图控制器向现有视图添加新的子视图,而不是以模态方式使用新的视图控制器。

您可以使用以下内容执行“幻灯片放映”动画:

[self.view addSubview: newView];

CGRect endFrame = newView.frame; // destination for "slide in" animation
CGRect startFrame = endFrame; // offscreen source

// new view starts off bottom of screen
startFrame.origin.y += self.view.frame.size.height;
self.newImageView.frame = startFrame;

// start the slide up animation
[UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:.3];   
    newView.frame = endFrame; // slide in
[UIView commitAnimations];

答案 1 :(得分:1)

您可以使用模态视图控制器以有限的方式完成此操作。查看Apple docs中UIModalPresentationStyle下的演示文稿选项。

您需要在iOS 3.2或更高版本上执行模态视图控制器。