gpt4 book ai didi

ios - 调用 viewWillTransitionToSize : manually

转载 作者:可可西里 更新时间:2023-11-01 03:37:45 38 4
gpt4 key购买 nike

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

    -(void) viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator 
{
/*The orientation of the phone just changed*/
}

现在我的问题是,如果用户已经在 ViewController page1 中处于横向模式并转到 UIViewController Page2,则不会调用上述方法。我知道我可以使用以下代码检查手机的当前方向

UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation;
if(orientation == UIInterfaceOrientationLandscapeLeft)
{
//Its in landscape mode
}

但是我不知道将什么参数传递给方法的大小(只有当方向改变时才会自动调用)如果我在横向模式下检测到它,我想手动调用这个方法。关于如何获取当前大小以传递给下面的方法的任何建议,其中宽度将大于高度(因为它处于横向模式)

 -(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];
}

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

更新:

我想多介绍一点背景。我目前有两个 UIViewControllers PageOnePageTwo。现在 PageTwo 中有类似这样的东西用于方向控制。控制流从 PageOnePageTwo

//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
.....
}
}

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

最佳答案

无论您在 viewWillTransitionToSize:withTransitionCoordinator: 中做什么,您都应该在 viewWillLayoutSubviewsviewDidLayoutSubviews 中执行。当 View Controller 的 View 首次出现在屏幕上时,它们会在旋转时发送,并且 UIKit 在调用 viewWillLayoutSubviews 之前更新 View 的框架。

关于ios - 调用 viewWillTransitionToSize : manually,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30114957/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com