簡體   English   中英

調用viewWillTransitionToSize:手動

[英]Calling viewWillTransitionToSize: manually

我目前有一個名為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有類似的東西用於方向控制。 控制流程從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
        .....
    } 
}

現在我在PageTwo代碼邏輯假定用戶在縱向模式下輸入它。 但實際上並非總是如此,因為用戶可以在LandscapeMode中輸入pageTwo 在這種情況下,控件不會重新調整到橫向模式,因為重新定向的方法不會在pageTwo中調用。 我的問題是如何手動調用reorientation方法viewWillTransitionToSize並傳遞尺寸寬度大於高度的尺寸參數?

無論你在viewWillTransitionToSize:withTransitionCoordinator:做什么,你應該在viewWillLayoutSubviewsviewDidLayoutSubviews做。 這些都是在旋轉時發送的當視圖控制器的視圖首次出現在屏幕上時,UIKit會在調用viewWillLayoutSubviews之前更新視圖的幀。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM