@@ -25,6 +25,7 @@ @interface TrueSheetViewController ()
2525
2626@implementation TrueSheetViewController {
2727 CGFloat _lastPosition;
28+ CGFloat _lastWidth;
2829 NSInteger _pendingDetentIndex;
2930 BOOL _pendingContentSizeChange;
3031 BOOL _pendingDetentsChange;
@@ -211,6 +212,7 @@ - (void)viewDidAppear:(BOOL)animated {
211212 dispatch_async (dispatch_get_main_queue (), ^{
212213 NSInteger index = [self currentDetentIndex ];
213214 CGFloat detent = [self detentValueForIndex: index];
215+ [self .delegate viewControllerDidChangeSize: self .view.frame.size];
214216 [self .delegate viewControllerDidPresentAtIndex: index position: self .currentPosition detent: detent];
215217 [self .delegate viewControllerDidFocus ];
216218
@@ -288,7 +290,12 @@ - (void)viewWillLayoutSubviews {
288290- (void )viewDidLayoutSubviews {
289291 [super viewDidLayoutSubviews ];
290292
291- [self .delegate viewControllerDidChangeSize: self .view.frame.size];
293+ // Update state on rotation (width change)
294+ CGFloat width = self.view .frame .size .width ;
295+ if (_lastWidth != width) {
296+ _lastWidth = width;
297+ [self .delegate viewControllerDidChangeSize: self .view.frame.size];
298+ }
292299
293300 if (_pendingDetentIndex >= 0 ) {
294301 NSInteger pendingIndex = _pendingDetentIndex;
@@ -297,6 +304,7 @@ - (void)viewDidLayoutSubviews {
297304 dispatch_after (dispatch_time (DISPATCH_TIME_NOW, (int64_t )(0.2 * NSEC_PER_SEC)), dispatch_get_main_queue (), ^{
298305 [self storeResolvedPositionForIndex: pendingIndex];
299306 CGFloat detent = [self detentValueForIndex: pendingIndex];
307+ [self .delegate viewControllerDidChangeSize: self .view.frame.size];
300308 [self .delegate viewControllerDidChangeDetent: pendingIndex position: self .currentPosition detent: detent];
301309 [self emitChangePositionDelegateWithPosition: self .currentPosition realtime: NO debug: @" pending detent change" ];
302310 });
@@ -735,6 +743,7 @@ - (void)sheetPresentationControllerDidChangeSelectedDetentIdentifier:
735743 NSInteger index = self.currentDetentIndex ;
736744 if (index >= 0 ) {
737745 CGFloat detent = [self detentValueForIndex: index];
746+ [self .delegate viewControllerDidChangeSize: self .view.frame.size];
738747 [self .delegate viewControllerDidChangeDetent: index position: self .currentPosition detent: detent];
739748 }
740749 });
0 commit comments