亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在iOS 7中以編程方式設置設備方向?

如何在iOS 7中以編程方式設置設備方向?

iOS
楊__羊羊 2019-10-08 09:51:58
我正在使用AutoLayout在iPad應用程序上工作,如果用戶啟用某種模式(“平視”模式),則我只希望支持縱向(或縱向顛倒)方向,并且如果設備處于風景,我想自動切換到人像模式。在頂視圖控制器中,我具有以下內容:- (NSUInteger) supportedInterfaceOrientations {    if (self.modeHeadsUp) {        return UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskPortraitUpsideDown;    } else {        return UIInterfaceOrientationMaskAll;    }}- (BOOL) shouldAutorotate {    return TRUE;}根據我在其他地方看到的答案,答案似乎是我應該使用“ application setStatusBarOrientation”。因此,在用戶選擇“抬頭”模式的方法中,我包括:    UIApplication *application = [UIApplication sharedApplication];    [application setStatusBarOrientation:UIInterfaceOrientationPortrait                                animated:YES];但是,這似乎沒有任何作用。雖然我可以物理移動設備以使其旋轉成縱向,但它不會自動旋轉。實際上,當在運行上述代碼以編程方式設置方向之后處于橫向模式時,當我使用以下代碼查詢應用程序“ statusBarOrientation”時,對于橫向而言,它保持在“ 4”:UIApplication *application = [UIApplication sharedApplication];int orientation = [application statusBarOrientation];self.movesTextView.text = [NSString stringWithFormat:@"ORIENTATION %d", orientation];似乎沒有用setStatusBarOrientation觸發自動布局,所以我嘗試在此之后添加以下代碼,但沒有任何效果:    [super updateViewConstraints];    [self.view updateConstraints];我意識到Apple希望將設備定位交給用戶。但是,我希望能夠在不使用“平視”模式時支持橫向模式。我是否缺少能夠強制改變方向的東西?
查看完整描述

3 回答

?
萬千封印

TA貢獻1891條經驗 獲得超3個贊

對于iOS 7和8:


目標C:


NSNumber *value = [NSNumber numberWithInt:UIInterfaceOrientationLandscapeLeft];

[[UIDevice currentDevice] setValue:value forKey:@"orientation"];

迅捷3+:


let value = UIInterfaceOrientation.landscapeLeft.rawValue

UIDevice.current.setValue(value, forKey: "orientation")

我叫它- viewDidAppear:。


查看完整回答
反對 回復 2019-10-08
?
幕布斯6054654

TA貢獻1876條經驗 獲得超7個贊

用這個。定向問題的完美解決方案..ios7和更早版本


[[UIDevice currentDevice] setValue:

    [NSNumber numberWithInteger: UIInterfaceOrientationPortrait]

        forKey:@"orientation"];


查看完整回答
反對 回復 2019-10-08
?
瀟瀟雨雨

TA貢獻1833條經驗 獲得超4個贊

NSNumber *value = [NSNumber numberWithInt:UIInterfaceOrientationLandscapeLeft]; [[UIDevice currentDevice] setValue:value forKey:@"orientation"];

確實可以,但是您必須在視圖控制器中返回shouldAutorotate并使用YES


- (BOOL)shouldAutorotate

{

    return self.shouldAutoRotate;

}

但是,如果這樣做,如果用戶旋轉設備,VC將自動旋轉...因此我將其更改為:


@property (nonatomic, assign) BOOL shouldAutoRotate;


- (BOOL)shouldAutorotate

{

    return self.shouldAutoRotate;

}

我打電話


- (void)swithInterfaceOrientation:(UIInterfaceOrientation)orientation

{

    self.rootVC.shouldAutoRotate = YES;


    NSNumber *value = [NSNumber numberWithInt: orientation];

    [[UIDevice currentDevice] setValue:value forKey:@"orientation"];

}

單擊按鈕以強制新的方向。要將shouldAutoRotate設置為NO,我將其添加到了rootVC


- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation

{

    self.shouldAutoRotate = NO;

}

PS:此替代方法也適用于所有模擬器。


查看完整回答
反對 回復 2019-10-08
  • 3 回答
  • 0 關注
  • 459 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號