Index: ios/chrome/browser/ui/ntp/new_tab_page_view.mm |
diff --git a/ios/chrome/browser/ui/ntp/new_tab_page_view.mm b/ios/chrome/browser/ui/ntp/new_tab_page_view.mm |
index 7f9f7ab87e63cfe169c902b229e1c613ae416218..5245ee5894f6f8217b6a0f9fed9161bb52973cc3 100644 |
--- a/ios/chrome/browser/ui/ntp/new_tab_page_view.mm |
+++ b/ios/chrome/browser/ui/ntp/new_tab_page_view.mm |
@@ -80,11 +80,15 @@ |
[self.scrollView setContentOffset:point animated:NO]; |
} |
- // Trigger a layout. The |-layoutIfNeeded| call is required because sometimes |
- // |-layoutSubviews| is not successfully triggered when |-setNeedsLayout| is |
- // called after frame changes due to autoresizing masks. |
- [self setNeedsLayout]; |
- [self layoutIfNeeded]; |
+ // This should never be needed in autolayout. |
+ if (self.translatesAutoresizingMaskIntoConstraints) { |
+ // Trigger a layout. The |-layoutIfNeeded| call is required because |
+ // sometimes |-layoutSubviews| is not successfully triggered when |
+ // |-setNeedsLayout| is called after frame changes due to autoresizing |
+ // masks. |
+ [self setNeedsLayout]; |
+ [self layoutIfNeeded]; |
+ } |
} |
- (void)layoutSubviews { |
@@ -102,6 +106,14 @@ |
CGRectGetMinX(self.bounds), CGRectGetMinY(self.bounds), |
CGRectGetWidth(self.bounds), CGRectGetMinY(self.tabBar.frame)); |
} |
+ |
+ // When using a new_tab_page_view in autolayout -setFrame is never called, |
+ // which means all the logic to keep the selected scroll index set is never |
+ // called. Rather than refactor away all of this to support ios/clean, just |
+ // make sure -setFrame is called when loaded in autolayout. |
+ if (!self.translatesAutoresizingMaskIntoConstraints) { |
+ [self setFrame:self.frame]; |
+ } |
} |
- (void)updateScrollViewContentSize { |