|
6 | 6 |
|
7 | 7 | #import "flutter/shell/platform/darwin/ios/framework/Source/FlutterViewController_Internal.h"
|
8 | 8 |
|
9 |
| -#import <os/log.h> |
10 | 9 | #include <memory>
|
11 | 10 |
|
12 | 11 | #include "flutter/fml/memory/weak_ptr.h"
|
@@ -1537,51 +1536,26 @@ - (void)onOrientationPreferencesUpdated:(NSNotification*)notification {
|
1537 | 1536 | - (void)performOrientationUpdate:(UIInterfaceOrientationMask)new_preferences {
|
1538 | 1537 | if (new_preferences != _orientationPreferences) {
|
1539 | 1538 | _orientationPreferences = new_preferences;
|
1540 |
| - |
1541 |
| - if (@available(iOS 16.0, *)) { |
1542 |
| - for (UIScene* scene in UIApplication.sharedApplication.connectedScenes) { |
1543 |
| - if (![scene isKindOfClass:[UIWindowScene class]]) { |
1544 |
| - continue; |
1545 |
| - } |
1546 |
| - UIWindowScene* windowScene = (UIWindowScene*)scene; |
1547 |
| - UIInterfaceOrientationMask currentInterfaceOrientation = |
1548 |
| - 1 << windowScene.interfaceOrientation; |
1549 |
| - if (!(_orientationPreferences & currentInterfaceOrientation)) { |
1550 |
| - [self setNeedsUpdateOfSupportedInterfaceOrientations]; |
1551 |
| - UIWindowSceneGeometryPreferencesIOS* preference = |
1552 |
| - [[[UIWindowSceneGeometryPreferencesIOS alloc] |
1553 |
| - initWithInterfaceOrientations:_orientationPreferences] autorelease]; |
1554 |
| - [windowScene |
1555 |
| - requestGeometryUpdateWithPreferences:preference |
1556 |
| - errorHandler:^(NSError* error) { |
1557 |
| - os_log_error(OS_LOG_DEFAULT, |
1558 |
| - "Failed to change device orientation: %@", |
1559 |
| - error); |
1560 |
| - }]; |
1561 |
| - } |
1562 |
| - } |
1563 |
| - } else { |
1564 |
| - UIInterfaceOrientationMask currentInterfaceOrientation = |
1565 |
| - 1 << [[UIApplication sharedApplication] statusBarOrientation]; |
1566 |
| - if (!(_orientationPreferences & currentInterfaceOrientation)) { |
1567 |
| - [UIViewController attemptRotationToDeviceOrientation]; |
1568 |
| - // Force orientation switch if the current orientation is not allowed |
1569 |
| - if (_orientationPreferences & UIInterfaceOrientationMaskPortrait) { |
1570 |
| - // This is no official API but more like a workaround / hack (using |
1571 |
| - // key-value coding on a read-only property). This might break in |
1572 |
| - // the future, but currently it´s the only way to force an orientation change |
1573 |
| - [[UIDevice currentDevice] setValue:@(UIInterfaceOrientationPortrait) |
1574 |
| - forKey:@"orientation"]; |
1575 |
| - } else if (_orientationPreferences & UIInterfaceOrientationMaskPortraitUpsideDown) { |
1576 |
| - [[UIDevice currentDevice] setValue:@(UIInterfaceOrientationPortraitUpsideDown) |
1577 |
| - forKey:@"orientation"]; |
1578 |
| - } else if (_orientationPreferences & UIInterfaceOrientationMaskLandscapeLeft) { |
1579 |
| - [[UIDevice currentDevice] setValue:@(UIInterfaceOrientationLandscapeLeft) |
1580 |
| - forKey:@"orientation"]; |
1581 |
| - } else if (_orientationPreferences & UIInterfaceOrientationMaskLandscapeRight) { |
1582 |
| - [[UIDevice currentDevice] setValue:@(UIInterfaceOrientationLandscapeRight) |
1583 |
| - forKey:@"orientation"]; |
1584 |
| - } |
| 1539 | + [UIViewController attemptRotationToDeviceOrientation]; |
| 1540 | + |
| 1541 | + UIInterfaceOrientationMask currentInterfaceOrientation = |
| 1542 | + 1 << [[UIApplication sharedApplication] statusBarOrientation]; |
| 1543 | + if (!(_orientationPreferences & currentInterfaceOrientation)) { |
| 1544 | + // Force orientation switch if the current orientation is not allowed |
| 1545 | + if (_orientationPreferences & UIInterfaceOrientationMaskPortrait) { |
| 1546 | + // This is no official API but more like a workaround / hack (using |
| 1547 | + // key-value coding on a read-only property). This might break in |
| 1548 | + // the future, but currently it´s the only way to force an orientation change |
| 1549 | + [[UIDevice currentDevice] setValue:@(UIInterfaceOrientationPortrait) forKey:@"orientation"]; |
| 1550 | + } else if (_orientationPreferences & UIInterfaceOrientationMaskPortraitUpsideDown) { |
| 1551 | + [[UIDevice currentDevice] setValue:@(UIInterfaceOrientationPortraitUpsideDown) |
| 1552 | + forKey:@"orientation"]; |
| 1553 | + } else if (_orientationPreferences & UIInterfaceOrientationMaskLandscapeLeft) { |
| 1554 | + [[UIDevice currentDevice] setValue:@(UIInterfaceOrientationLandscapeLeft) |
| 1555 | + forKey:@"orientation"]; |
| 1556 | + } else if (_orientationPreferences & UIInterfaceOrientationMaskLandscapeRight) { |
| 1557 | + [[UIDevice currentDevice] setValue:@(UIInterfaceOrientationLandscapeRight) |
| 1558 | + forKey:@"orientation"]; |
1585 | 1559 | }
|
1586 | 1560 | }
|
1587 | 1561 | }
|
|
0 commit comments