換了一個(gè)新的工作環(huán)境且蓬,感覺(jué)還是滿(mǎn)好的欣硼,方向也是自己比較感興趣,就是項(xiàng)目太緊恶阴,不到半個(gè)月的時(shí)間诈胜,已經(jīng)經(jīng)歷了一個(gè)通宵,只是期待項(xiàng)目早點(diǎn)上線吧存淫。
說(shuō)說(shuō)關(guān)于屏幕旋轉(zhuǎn)適配的問(wèn)題吧耘斩,因?yàn)樯蟼€(gè)項(xiàng)目就有這個(gè)需求,除了視頻播放的界面是橫屏可旋轉(zhuǎn)的桅咆,其它的界面都要求是堅(jiān)屏不可旋轉(zhuǎn)括授,由于那個(gè)項(xiàng)目的根視圖控制器就是一個(gè)NavigationController,所以當(dāng)時(shí)查的方法,只要自己創(chuàng)建一個(gè)NavigationController繼承于UINavigationController,作為根視圖控制器荚虚,重寫(xiě)shouldAutorotate
和supportedInterfaceOrientations
薛夜,這兩個(gè)方法,然后在每個(gè)頁(yè)面都寫(xiě)重寫(xiě)這兩個(gè)方法就能實(shí)現(xiàn)控制能否旋轉(zhuǎn)和支持橫屏豎,但到了現(xiàn)在這個(gè)新項(xiàng)目這里行不通了版述,不管用了梯澜,查閱文檔資料,才明白渴析,這兩個(gè)方法都是在根視圖控制器上實(shí)現(xiàn)的晚伙,當(dāng)根視圖是nav時(shí),需要實(shí)現(xiàn)在nav俭茧,當(dāng)根視圖是tabBarController的時(shí)候咆疗,還需要在tabBarController上也實(shí)現(xiàn),并且母债,如果也有navigationController的時(shí)候午磁,就需要在兩個(gè)控制器上都實(shí)現(xiàn),下面配圖具體說(shuō)明一下:
這個(gè)是我做的前一個(gè)項(xiàng)目架構(gòu)毡们,對(duì)于這種以NavigationController為根視圖控制器迅皇,只需要讓NavigationController繼承我們自己寫(xiě)的nav控制器即可,然后在vc1衙熔、vc2登颓、vc3分別重寫(xiě)
shouldAutorotate
和supportedInterfaceOrientations
方法即可。這個(gè)是我現(xiàn)在做的項(xiàng)目架構(gòu)红氯,這種不但需要讓nav1挺据、nav2、nav3都繼承我們自己寫(xiě)的nav控制器脖隶,還需要在tabBarController里實(shí)現(xiàn)
shouldAutorotate
這個(gè)方法(supportedInterfaceOrientations
方法可以不實(shí)現(xiàn));最后在vc1、vc2暇检、vc3分別重寫(xiě)shouldAutorotate
和supportedInterfaceOrientations
兩個(gè)方法产阱。當(dāng)然,這兩種屏幕旋轉(zhuǎn)控制的前提是需要讓Device Orientation中支持橫屏豎屏块仆,如下圖
這樣就實(shí)現(xiàn)了對(duì)屏幕控制构蹬,當(dāng)然,有更好想法的朋友也希望能一起分享悔据,共同進(jìn)步庄敛,由于第二種包含第一種,所以我就只提供第二種的demo了科汗,沒(méi)看懂的可以根據(jù)demo來(lái)理解藻烤,歡迎大家star。