特定界面橫屏

最近遇到視頻的需求鳖孤,里面有全屏岗憋,因此研究了一下全屏的問題实抡,

需求

  • 進界面的時候是豎屏
  • 進入 播放界面是豎屏
  • 播放界面中可以自動翻轉(zhuǎn)

解決方案

其中糾結(jié)的部分就不提了欠母,直接說解決方案吧

需求1

需求1的重點在于欢策,讓app支持橫屏,但是進入界面的時候是豎屏
首先赏淌,通過設(shè)置TARGETS - General - Deployment info - Device orientation 的選項為第一個

25A3174B-677C-4531-B9E3-4C5BDC0EBC66.png

然后在AppDelegate中添加一下代理

   func application(_ application: UIApplication, supportedInterfaceOrientationsFor window: UIWindow?) -> UIInterfaceOrientationMask {
    //設(shè)置app支持的屏幕模式
    return [.portrait, .landscapeLeft, .landscapeRight]
}

需求2

其實就是出了播放頁面外踩寇,所有頁面都是豎屏
viewController 有以下幾個屬性可供重寫,通過重寫這幾個方法六水,來實現(xiàn)界面的橫屏或豎屏
@available(iOS 6.0, *) //屏幕自動翻轉(zhuǎn)
open var shouldAutorotate: Bool { get }

  @available(iOS 6.0, *) // 當前界面支持的屏幕方向
  open var supportedInterfaceOrientations: UIInterfaceOrientationMask { get }

  // Returns interface orientation masks.
  @available(iOS 6.0, *) //初始屏幕方向俺孙,--但是實際上看意義不大
  open var preferredInterfaceOrientationForPresentation: UIInterfaceOrientation { get }

經(jīng)過查坑發(fā)現(xiàn),VC里面重寫的方法并不是都能調(diào)用掷贾,因為被NavigationController和TabbarController給攔截了睛榄,需要在NavigationController和TabbarController中添加一下方法

如果沒有用到nav或者tab,就不用重寫了

  • ViewController

    override var shouldAutorotate: Bool
    {
      return true
    }
    
    override var supportedInterfaceOrientations: UIInterfaceOrientationMask
    {
      return [.portrait, .landscapeRight, .landscapeLeft]
    }
    
    override var preferredInterfaceOrientationForPresentation: UIInterfaceOrientation
      {
      return .landscapeLeft
    }
    
  • NavigationController

     override var shouldAutorotate: Bool
    {
      if let top = topViewController {
          return top.shouldAutorotate
      }
      return false
    }
    
    override var supportedInterfaceOrientations: UIInterfaceOrientationMask
    {
      if let top = topViewController {
          return top.supportedInterfaceOrientations
      }
      return .portrait
    }
    
    override var preferredInterfaceOrientationForPresentation: UIInterfaceOrientation
        {
      //測試著不怎么管用想帅,不知道為什么场靴,
      if let top = topViewController {
          return top.preferredInterfaceOrientationForPresentation
      }
      return .portrait
    }
    
  • TabbarController

    open override var shouldAutorotate: Bool
    {
      if let vc = selectedViewController {
          return vc.shouldAutorotate
      }
      return false
    }
    
    open override var supportedInterfaceOrientations: UIInterfaceOrientationMask
    {
      if let vc = selectedViewController {
          return vc.supportedInterfaceOrientations
      }
      return .portrait
    }
    

通過重寫navtab里面的方法,調(diào)用VC里面重寫的方法港准。

需求3

其實上面就已經(jīng)實現(xiàn)了需求3的基本效果旨剥,如果再多說點,就是得加個屏幕翻轉(zhuǎn)的監(jiān)聽浅缸,來實現(xiàn)刷新界面之類的操作了--轨帜!廢話不多說,關(guān)門放代碼:

override func viewDidLoad() {
    super.viewDidLoad()
    NotificationCenter.default.addObserver(self, selector: #selector(onDeviceOrientationChange), name: NSNotification.Name.UIDeviceOrientationDidChange, object: nil)
}

deinit {
    NotificationCenter.default.removeObserver(self)
}

func onDeviceOrientationChange()  {
    //界面方向發(fā)生變化
    let orientation = UIDevice.current.orientation
    let interfaceOrientation = UIInterfaceOrientation(rawValue: orientation.rawValue)
    
    //該去做什么就去做什么吧
}

總結(jié)-到此衩椒,該有的功能就都有了蚌父,雖然感覺極其繁瑣,同樣烟具,有過誰發(fā)現(xiàn)更好的辦法梢什,順便告訴我一聲,不勝感激~朝聋。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末嗡午,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子冀痕,更是在濱河造成了極大的恐慌荔睹,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,252評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件言蛇,死亡現(xiàn)場離奇詭異僻他,居然都是意外死亡,警方通過查閱死者的電腦和手機腊尚,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評論 3 399
  • 文/潘曉璐 我一進店門吨拗,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事劝篷∩谘迹” “怎么了?”我有些...
    開封第一講書人閱讀 168,814評論 0 361
  • 文/不壞的土叔 我叫張陵娇妓,是天一觀的道長像鸡。 經(jīng)常有香客問我,道長哈恰,這世上最難降的妖魔是什么只估? 我笑而不...
    開封第一講書人閱讀 59,869評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮着绷,結(jié)果婚禮上蛔钙,老公的妹妹穿的比我還像新娘。我一直安慰自己荠医,他們只是感情好夸楣,可當我...
    茶點故事閱讀 68,888評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著子漩,像睡著了一般。 火紅的嫁衣襯著肌膚如雪石洗。 梳的紋絲不亂的頭發(fā)上幢泼,一...
    開封第一講書人閱讀 52,475評論 1 312
  • 那天,我揣著相機與錄音讲衫,去河邊找鬼缕棵。 笑死,一個胖子當著我的面吹牛涉兽,可吹牛的內(nèi)容都是我干的招驴。 我是一名探鬼主播,決...
    沈念sama閱讀 41,010評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼枷畏,長吁一口氣:“原來是場噩夢啊……” “哼别厘!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起拥诡,我...
    開封第一講書人閱讀 39,924評論 0 277
  • 序言:老撾萬榮一對情侶失蹤触趴,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后渴肉,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體冗懦,經(jīng)...
    沈念sama閱讀 46,469評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,552評論 3 342
  • 正文 我和宋清朗相戀三年仇祭,在試婚紗的時候發(fā)現(xiàn)自己被綠了披蕉。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,680評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖没讲,靈堂內(nèi)的尸體忽然破棺而出眯娱,到底是詐尸還是另有隱情,我是刑警寧澤食零,帶...
    沈念sama閱讀 36,362評論 5 351
  • 正文 年R本政府宣布困乒,位于F島的核電站,受9級特大地震影響贰谣,放射性物質(zhì)發(fā)生泄漏娜搂。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,037評論 3 335
  • 文/蒙蒙 一吱抚、第九天 我趴在偏房一處隱蔽的房頂上張望百宇。 院中可真熱鬧,春花似錦秘豹、人聲如沸携御。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽啄刹。三九已至,卻和暖如春凄贩,著一層夾襖步出監(jiān)牢的瞬間誓军,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評論 1 274
  • 我被黑心中介騙來泰國打工疲扎, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留昵时,地道東北人。 一個月前我還...
    沈念sama閱讀 49,099評論 3 378
  • 正文 我出身青樓椒丧,卻偏偏與公主長得像壹甥,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子壶熏,可洞房花燭夜當晚...
    茶點故事閱讀 45,691評論 2 361

推薦閱讀更多精彩內(nèi)容