Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/108.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
&引用;ViewWillTransitionOnSize:“视图大小”;当视图控制器以模式显示时,在iOS 9中未调用_Ios_Uiviewcontroller_Screen Orientation_Autorotate_Presentviewcontroller - Fatal编程技术网

&引用;ViewWillTransitionOnSize:“视图大小”;当视图控制器以模式显示时,在iOS 9中未调用

&引用;ViewWillTransitionOnSize:“视图大小”;当视图控制器以模式显示时,在iOS 9中未调用,ios,uiviewcontroller,screen-orientation,autorotate,presentviewcontroller,Ios,Uiviewcontroller,Screen Orientation,Autorotate,Presentviewcontroller,我从另一个视图控制器演示了一个视图控制器: - (void)showModalView { UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil]; MySecViewController *mySecViewController = [storyboard instantiateViewControllerWithIdentifier:@"secController"];

我从另一个视图控制器演示了一个视图控制器:

- (void)showModalView
{
   UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
   MySecViewController *mySecViewController = [storyboard instantiateViewControllerWithIdentifier:@"secController"];
   mySecViewController.delegate = self;
   [self presentViewController:mySecViewController animated:YES completion:nil];
}
然后,在显示的
UIViewController
中,将在
ios8
中调用方法
viewwilltransitionsize:withtransitionocordinator:
,而不是在
ios9
中调用方法


谢谢

在您当前的视图控制器中,如果您使用TransitionCoordinator:覆盖
视图将TransitionOnSize:。否则,此消息将不会传播到子视图控制器

对于目标-C

- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator {
    [super viewWillTransitionToSize:size withTransitionCoordinator:coordinator];

    // Your other code ... 
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
    super.viewWillTransition(to: size, with: coordinator)

    // Your other code ...
}

这似乎是一个微不足道的例子,但在使用iPad时,请检查用户是否未在设置或控制面板或侧边按钮中激活旋转锁

可能有点晚了,但我在这里为遇到这一令人沮丧问题的任何人提供了这一信息

请记住,
viewwilltransitiononsize:withtransitionocordinator:
有时会在视图控制器的
presentingViewController
上被调用。(如果该视图控制器也有一个
presentingViewController
,它可能会被调用)

我真的搞不懂这背后的逻辑,但这就是我的问题所在。因此,在我的许多视图控制器中,我必须使用TransitionCoordinator:
覆盖
ViewWillTransitionOnSize:

- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator {
    [super viewWillTransitionToSize:size withTransitionCoordinator:coordinator];

    [self.presentedViewController viewWillTransitionToSize:size withTransitionCoordinator:coordinator];
}
-(void)视图将转换大小:(CGSize)带有转换协调器的大小:(id)协调器{
[super ViewWillTransitionSize:size with TransitionCoordinator:coordinator];
[self.presentedViewController视图将转换大小:带有转换协调员的大小];
}

人们已经解释过,你必须呼叫super。我想补充一条信息,这可能会帮助那些本该面对我所面对的人

场景:父级->子级(viewWillTransition未在子级中调用)
如果视图控制器是子视图控制器,则检查是否调用了父视图控制器委托,以及是否在那里调用了super否则它将不会传播到子视图控制器

class ParentViewController: UIViewController {

    func presentChild() {
        let child = ChildViewController()
        present(child, animated: false, compeltion: nil)
    }

    override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
        super.viewWillTransition(to: size, with: coordinator) // If this line is missing your child will not get the delegate call in it's viewWillTransition

        // Do something
    }
}

class ChildViewController: UIViewController {

    // This method will not get called if presented from parent view controller and super is not called inside the viewViewWillTransition available there.
    override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
       super.viewWillTransition(to: size, with: coordinator)

       //Do something
    }
}


另外,这发生在我身上,因为父母的代码是别人写的,他们忘了叫super。

我也面临同样的问题。为我工作!谢谢但是super通常用于超类。但在这里我可以看到一个不同的超级实用程序。