1

我试图将 modalviewcontroller 的动画设置为 false 并且帧调整不起作用,但是当我尝试打开动画时它会正常工作。有解决办法吗?以下是我的代码的上下文:

MyModal *modal = [[MyModal alloc] initWithNibName:@"MyModal" bundle:nil];
modal.modalPresentationStyle = UIModalPresentationFormSheet;

modal.view.superview.frame = CGRectMake(0, 0, 458, 230);
modal.view.superview.center = self.view.center;

[self.navigationController presentModalViewController:modal animated:NO];
4

2 回答 2

0

你试图做的实际上是错误的。从您的代码中;

 MyModal *modal = [[MyModal alloc] initWithNibName:@"MyModal" bundle:nil];
    modal.modalPresentationStyle = UIModalPresentationFormSheet;

    modal.view.superview.frame = CGRectMake(0, 0, 458, 230);
    modal.view.superview.center = self.view.center;

    [self.navigationController presentModalViewController:modal animated:NO]

上面的代码永远不会起作用,因为您正在设置尚未创建的视图的框架。

因此,您只能在创建或呈现新视图后设置框架。在您的MyModal视图控制器中,设置框架viewDidAppear注意不要这样做viewWillAppear

- (void) viewDidAppear:(BOOL)animated
 {
      // code to set the frame here

 }

希望这可以帮助。

于 2013-03-05T08:41:07.757 回答
0

在我看来,你应该拿代码

modal.view.superview.frame = CGRectMake(0, 0, 458, 230);
modal.view.superview.center = self.view.center;

到 MyModal 的 -(void)viewDidLoad 或 -(void)viewWillAppear 方法。

从 nib 启动视图比代码需要更多时间;在将视图启动到内存之前,nil modal.view 的框架已经重置,然后加载 nib 的框架。当您关闭动画时,动画需要时间显示,然后,框架可以调整大小。

于 2013-03-05T08:42:39.297 回答