第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

如何在IOS 8中強(qiáng)制查看控制器方向?

如何在IOS 8中強(qiáng)制查看控制器方向?

胡子哥哥 2019-07-08 16:14:06
如何在IOS 8中強(qiáng)制查看控制器方向?在iOS 8之前,我們將下面的代碼與支持接口定向和應(yīng)自旋委托方法強(qiáng)制應(yīng)用程序定向到任何特定方向。我使用下面的代碼片段以編程方式將應(yīng)用程序旋轉(zhuǎn)到所需的方向。首先,我改變了狀態(tài)欄的方向。然后,只要呈現(xiàn)并立即丟棄一個(gè)模態(tài)視圖,就可以將視圖旋轉(zhuǎn)到所需的方向。[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeRight animated:YES]; UIViewController *c = [[UIViewController alloc]init];[self presentViewController:vc animated:NO completion:nil]; [self dismissViewControllerAnimated:NO completion:nil];但這在iOS 8中是失敗的。而且,我在堆棧溢出中看到了一些答案,人們建議我們應(yīng)該從iOS 8開始始終避免這種方法。更具體地說(shuō),我的應(yīng)用程序是一種通用的應(yīng)用程序類型。總共有三個(gè)控制器。第一視圖控制器-它應(yīng)該支持iPad中的所有方向,只支持iPhone中的肖像畫(主頁(yè)按鈕)。第二視圖控制器-在任何情況下都應(yīng)支持景觀權(quán)第三視圖控制器-在任何情況下都應(yīng)支持景觀權(quán)我們使用導(dǎo)航控制器進(jìn)行頁(yè)面導(dǎo)航。從第一個(gè)視圖控制器,在一個(gè)按鈕單擊操作,我們推動(dòng)第二個(gè)在堆棧上。因此,當(dāng)?shù)诙€(gè)視圖控制器到達(dá)時(shí),不管設(shè)備的方向如何,應(yīng)用程序應(yīng)該只鎖定在景觀右側(cè)。下面是我的shouldAutorotate和supportedInterfaceOrientations方法在第二視圖控制器和第三視圖控制器中。-(NSUInteger)supportedInterfaceOrientations{     return UIInterfaceOrientationMaskLandscapeRight;}-(BOOL)shouldAutorotate {     return NO;}是否有任何解決方案或任何更好的方法鎖定一個(gè)視圖控制器,特別是iOS 8的方向。請(qǐng)幫助!
查看完整描述

3 回答

?
阿波羅的戰(zhàn)車

TA貢獻(xiàn)1862條經(jīng)驗(yàn) 獲得超6個(gè)贊

對(duì)于IOS 7-10:

目標(biāo)-C:

[[UIDevice currentDevice] setValue:@(UIInterfaceOrientationLandscapeLeft) forKey:@"orientation"];
[UINavigationController attemptRotationToDeviceOrientation];

SWIFT 3:

let value = UIInterfaceOrientation.landscapeLeft.rawValueUIDevice.current.setValue(value, forKey: "orientation")
UINavigationController.attemptRotationToDeviceOrientation()

打電話給我就行了- viewDidAppear:視圖控制器。


查看完整回答
反對(duì) 回復(fù) 2019-07-08
?
溫溫醬

TA貢獻(xiàn)1752條經(jīng)驗(yàn) 獲得超4個(gè)贊

如果您在一個(gè)UINavigationControllerUITabBarController..問(wèn)題是,如果視圖控制器嵌入在其中一個(gè)控制器中,導(dǎo)航或選項(xiàng)卡控制器優(yōu)先,并就自動(dòng)旋轉(zhuǎn)和支持的方向作出決定。

我在UINavigationController和UITabBarController上使用了以下兩個(gè)擴(kuò)展,這樣嵌入在其中一個(gè)控制器中的視圖控制器就可以做出決策。

給視圖控制器權(quán)力!

SWIFT 2.3

extension UINavigationController {
    public override func supportedInterfaceOrientations() -> Int {
        return visibleViewController.supportedInterfaceOrientations()
    }
    public override func shouldAutorotate() -> Bool {
        return visibleViewController.shouldAutorotate()
    }}extension UITabBarController {
    public override func supportedInterfaceOrientations() -> Int {
        if let selected = selectedViewController {
            return selected.supportedInterfaceOrientations()
        }
        return super.supportedInterfaceOrientations()
    }
    public override func shouldAutorotate() -> Bool {
        if let selected = selectedViewController {
            return selected.shouldAutorotate()
        }
        return super.shouldAutorotate()
    }}

SWIFT 3

extension UINavigationController {
    open override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
        return visibleViewController?.supportedInterfaceOrientations ?? super.supportedInterfaceOrientations    }

    open override var shouldAutorotate: Bool {
        return visibleViewController?.shouldAutorotate ?? super.shouldAutorotate    }}extension UITabBarController {
    open override var supportedInterfaceOrientations: UIInterfaceOrientationMask {
        if let selected = selectedViewController {
            return selected.supportedInterfaceOrientations        }
        return super.supportedInterfaceOrientations    }

    open override var shouldAutorotate: Bool {
        if let selected = selectedViewController {
            return selected.shouldAutorotate        }
        return super.shouldAutorotate    }}

現(xiàn)在可以覆蓋supportedInterfaceOrientations方法,或者可以重寫shouldAutoRotate在視圖控制器中,您想要鎖定,否則您可以省略在其他視圖控制器中的重寫,您希望繼承應(yīng)用程序的plist中指定的默認(rèn)定向行為。

禁用旋轉(zhuǎn)

class ViewController: UIViewController {
    override func shouldAutorotate() -> Bool {
        return false
    }}

鎖定到特定方向

class ViewController: UIViewController {
    override func supportedInterfaceOrientations() -> Int {
        return Int(UIInterfaceOrientationMask.Landscape.rawValue)
    }}

理論上,這應(yīng)該適用于所有復(fù)雜的視圖控制器層次結(jié)構(gòu),但我注意到了UITabBarController的一個(gè)問(wèn)題。出于某種原因,它希望使用默認(rèn)的定向值。如果您有興趣了解如何解決其中的一些問(wèn)題,請(qǐng)參見下面的博客文章:

鎖屏旋轉(zhuǎn)


查看完整回答
反對(duì) 回復(fù) 2019-07-08
  • 3 回答
  • 0 關(guān)注
  • 644 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)