簡體   English   中英

iOS 11強制UIViewController進入縱向模式不起作用

[英]iOS 11 Force UIViewController to portrait mode doesn't work

根據蘋果論壇上的討論 ,此方法在iOS <11設備(但> iOS 6)上很好用

這樣可以防止任何旋轉。

- (BOOL)shouldAutorotate
{
    return NO;
}

這只會旋轉為縱向(正面朝上或上下顛倒)。

- (NSUInteger)supportedInterfaceOrientations
{
    return UIInterfaceOrientationMaskPortrait + UIInterfaceOrientationMaskPortraitUpsideDown;
}

但是,它不能在iOS 11 Beta 9上運行。

如果您有一個允許所有方向的應用程序,但只想使用此方法將MainViewController設置為Portrait。

如果按住設備橫向並啟動應用程序,則在啟動屏幕后,statusBar將位於屏幕頂部(橫向時),並且視圖仍為縱向。

如果您使用方法像這樣的答案來切換rootViewController,那么您將最終得到強制以縱向顯示的橫向渲染視圖。

像這樣的一些示例圖:

在此處輸入圖片說明

齒輪圖標位於正確的位置,但來自圖書館。 其他一切看起來都像風景。

謝謝

沒有足夠的聲譽積分來回復@ Vishal16答案 ……這對我有所幫助。

我想在iPad上的所有視圖控制器上允許所有方向,而在iPhone上的大多數視圖控制器上則允許縱向模式,因此我希望盡快進行更改,因此這是我的稍作修改的版本:

在您的應用程序委托中:

var isPortrait = true

func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask {

    if UIDevice.current.userInterfaceIdiom == .pad || !isPortrait {
        return .all
    }
    return .portrait
}


然后在准備中(用於segue:...

    (UIApplication.shared.delegate as? AppDelegate)?.isPortrait = true

使用false可以在segue上旋轉視圖控制器,其他則使用true。

請享用!

當您出現任何viewController AppDelegate時,將自動調用此方法進行強制旋轉。 我正在使用它,並且在我的所有應用程序中都可以正常工作

AppDelegate.m

- (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
   if (self.isPotrait) {
       return UIInterfaceOrientationMaskPortrait|UIInterfaceOrientationMaskPortraitUpsideDown;
   }
   return UIInterfaceOrientationMaskAll;
}

定義一個屬性:

@property (assign, nonatomic) BOOL isPotrait;

在prepareForSegue方法中調用如下:

if ([segue.identifier isEqualToString:@"segue_ID"]){
     AppDelegate *appDelegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
     [appDelegate setIsPotrait:true];
     YourViewController *yourVC = [segue destinationViewController];
}

希望這對您有所幫助。 快樂的編碼:)

暫無
暫無

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

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