6

我有一个关于屏幕转换的问题。

为了传输一个屏幕,我经常使用 presentViewController 方法。

NextViewController *nextViewController = [[NextViewController alloc] init];
nextViewController.view.frame = CGRectMake(10, 10, 200, 400);    
[self presentViewController:nextViewController animated:YES completion:nil];

但是,没有应用我实现的 view.frame 设置。

以下代码运行正确。

NextViewController *nextViewController = [[NextViewController alloc] init];
[self presentViewController:nextViewController animated:YES completion:nil];
nextViewController.view.frame = CGRectMake(10, 10, 200, 400);

这些代码有什么区别?view.frame 是否在 presentViewController 方法中重新定义?

谢谢。

4

3 回答 3

5
NextViewController *nextViewController = [[NextViewController alloc] init];
nextViewController.view.frame = CGRectMake(10, 10, 200, 400);    
[self presentViewController:nextViewController animated:YES completion:nil];

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

因此,在您的下一个代码中,您首先加载视图控制器,然后更改加载视图的框架。

==========================编辑======================== ===

如果您想直接在视图控制器中设置框架,然后将您的视图与 a 绑定IBOutlet,然后在

- (void) viewDidAppear:(BOOL)animated
 {
      //set the frame here
      self.myView.frame = CGRectMake(10, 10, 200, 400);
 }

希望能帮助到你 :)

于 2012-12-19T06:13:19.173 回答
1

self.view 在呈现视图控制器之前不会创建。

ie) nextViewController.view.frame 在 [self presentViewController:nextViewController animated:YES completion:nil] 之前无效;

于 2012-12-19T06:04:35.830 回答
0

现在nextViewController只有你才能更新它的各种属性。在视图加载到视图之前执行此操作将失败。呈现视图,然后更新它。

于 2012-12-19T06:24:51.703 回答