Ios 调用ViewWillTransitionOnSize:手动

Ios 调用ViewWillTransitionOnSize:手动,ios,objective-c,iphone,Ios,Objective C,Iphone,我目前有一个名为Page2 现在,如果将Iphone的方向更改为横向,则调用以下方法,这很好 -(void) viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator { /*The orientation of the phone just changed*/

我目前有一个名为
Page2
现在,如果将Iphone的方向更改为横向,则调用以下方法,这很好

    -(void) viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator 
    {
         /*The orientation of the phone just changed*/
    }
但是,我不知道将什么参数作为大小传递给该方法(仅当方向改变时才会自动调用),如果在横向模式下检测到该方法,我希望手动调用该方法。关于如何获得当前尺寸的任何建议,请转到下面的方法,其中宽度将大于高度(因为它处于横向模式)

但是,高度大于宽度,表明它仍处于纵向模式。。。我做错了什么?如何手动调用此方法并传递宽度大于高度的当前大小

更新:

我想提供更多的背景资料。我目前有两个UIViewController
PageOne
PageTwo
。现在
PageTwo
中有类似的东西用于方向控制。控制流程从
PageOne
PageTwo

//When device rotates
-(void) viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator
{

    DKTuner* sensitivityTuner;
    if (size.width > size.height)
    {   //Yes this is the landscape mode - Realign some controls to a different position.
        .....        
    }
    else
    {
        // this is portrait mode
        .....
    } 
}
//当设备旋转时
-(void)ViewWillTransitionOnSize:(CGSize)带有TransitionCoordinator:(id)coordinator的大小
{
DKTuner*灵敏度调谐;
如果(size.width>size.height)
{//是的,这是横向模式-将一些控件重新对齐到不同的位置。
.....        
}
其他的
{
//这是肖像模式
.....
} 
}

现在,我在
PageTwo
中的代码逻辑假定用户以纵向模式输入它。然而在现实中,这并不总是正确的,因为用户可以在景观模式下输入
pageTwo
。在这种情况下,控件不会重新调整为横向模式,因为在第二页中不会调用重新定向的方法。我的问题是,如何手动调用重定向方法
viewwilltransitionosize
,并传递一个尺寸宽度大于高度的尺寸参数?

无论您在
viewwilltransitionosize:withtransitionocordinator:
中执行什么操作,您可能应该在
viewWillLayoutSubviews
viewdillayoutsubviews
中执行此操作。当视图控制器的视图第一次出现在屏幕上时,这些视图将以旋转方式发送,并且UIKit会在调用
viewWillLayoutSubviews

之前更新视图的框架。我将对此进行尝试并报告back@MistyD那份报告需要一段时间,帮了我。非常感谢。嗨,罗布,如果我使用
视图willlayoutsubviews
,它不会一直不必要地做我需要做的事情吗?你说的“一直”是什么意思?该消息仅在视图控制器的视图需要布局时发送,布局可能不太常见。
 -(void) viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator ;
UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation;
    if(orientation == UIInterfaceOrientationLandscapeLeft || orientation == UIInterfaceOrientationLandscapeRight)
    {
        [self viewWillTransitionToSize:self.view.frame.size withTransitionCoordinator:nil];
    }
//When device rotates
-(void) viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator
{

    DKTuner* sensitivityTuner;
    if (size.width > size.height)
    {   //Yes this is the landscape mode - Realign some controls to a different position.
        .....        
    }
    else
    {
        // this is portrait mode
        .....
    } 
}