presentViewController是否更改view.frame?

aki*_*iwa 6 objective-c

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

为了传输屏幕,我经常使用presentViewController方法.

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

但是,我实现的view.frame设置未应用.

以下代码正确运行.

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

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

谢谢.

Aje*_*rya 5

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

上面的代码无法正常工作,因为您正在设置尚未创建的nextViewController的视图.

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

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

如果要直接在视图控制器中设置框架,请将视图与a绑定IBOutlet,然后再插入

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

希望能帮助到你 :)