2016年11月14日 星期一

swift 指定某個子頁能夠作翻轉

因為部分功能需求關系,原本APP預設只限制直向

但在特定指定頁面時怎麼辦呢???
程式碼如下:
在APPDelegate裡面加入

var shouldRotate:Bool = false

func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask {
        if shouldRotate{
            return .all
        }else{
            return .portrait
        }
    }
由於上方的func屬於強制轉向,所以我使用了.all而非.landscape

然後在你要翻轉的viewcontroller中加入
let appDelegate = UIApplication.shared.delegate as! AppDelegate
        appDelegate.shouldRotate = true

這樣就能夠在指定的頁面翻轉了,但注意如果storyborad有做constraints
請記得做好直向跟橫向的constraints。要不然畫面轉了也不會有動作喔!

3 則留言:

  1. 您好,謝謝您的分享的這個好方法,讓我可以很輕易的控制每個頁面是否可旋轉。

    回覆刪除
  2. 您好,我發現一開始的確可以控制其他頁面不轉向,只有我設定好的頁面才能轉向,但執行時發現,當特定頁面轉向之後,會導致其他頁面也開始可以轉向了,但是我只想要單一介面可以轉向。請問有什麼方法嗎?謝謝!

    回覆刪除
    回覆
    1. 您好,因為參數是宣告在AppDelegate內的,所以他會一直存在,除非您將其釋放並重新賦予,基本上你只有一個頁面要讓他能轉動,所以在該頁面的viewWillDisappear去將參數調整回false即可

      刪除