因此,我有一個項目,當用戶按下按鈕時需要強制進行方向更改。我創建了一個sample app on github來演示這個問題。編程接口方向更改不適用於iOS
@interface DefaultViewController() {
UIInterfaceOrientation _preferredOrientation;
}
一些旋轉處理位
- (BOOL)shouldAutorotate {
return YES;
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation {
return _preferredOrientation;
}
而且撥動
- (IBAction)toggleButtonPressed:(id)sender {
_preferredOrientation = UIInterfaceOrientationIsPortrait(_preferredOrientation)
? UIInterfaceOrientationLandscapeRight
: UIInterfaceOrientationPortrait;
[self forceOrientationChange];
}
- (void)forceOrientationChange
{
UIViewController *vc = [[UIViewController alloc] init];
[self presentViewController:vc animated:NO completion:nil];
[UIView animateWithDuration:.3 animations:^{
[vc dismissViewControllerAnimated:NO completion:nil];
} completion:nil];
}
所以,這似乎很好地工作時,你只要按下切換按鈕,按預期的方向變化。但是當我開始改變設備的實際方向時,就存在一個問題。
步驟來重現問題:
-
以肖像取向
- 按下按鈕以強制取向變化到橫向(保持在肖像實際設備)
- 打開應用 再次
- 按下按鈕強制旋轉回縱向(仍保持設備縱向)
- 旋轉的實際設備景觀沒有按下按鈕
結果是視圖不旋轉到橫向,但狀態欄確實如此。
任何幫助將不勝感激!
使用意見;) –