Hide large title when scrolling up

11,246

Solution 1

For me, it was that if you set the boolean "Prefers Large Titles" in the storyboard to true it will stay large, if you turn this on by code it works as expected!

Solution 2

I found a workaround on this site basically, if the tableView (or element that has scroll)is not the first view in your view hierarchy, the large title fails to hide automatically.

Example that will NOT work Example that will work

https://markusbodner.com/2017/10/08/fix-large-navigation-bar-title-not-hiding-on-scroll-in-ios-11/

I added on the view willAppear:

if #available(iOS 11.0, *) {
    navigationController?.navigationBar.prefersLargeTitles = true
} else {
    // Fallback on earlier versions
}

Solution 3

(void)scrollViewDidScroll:(UIScrollView *)scrollView {
    if (scrollView.contentOffset.y > 0) { //20
        [self.navigationController.navigationBar setPrefersLargeTitles:NO];
    } else {   
        [self.navigationController.navigationBar setPrefersLargeTitles:YES];
    }    
}
Share:
11,246
Jippe Joosten
Author by

Jippe Joosten

A iOS developer by day and gamer by night (if the code is done which it never is)

Updated on June 06, 2022

Comments

  • Jippe Joosten
    Jippe Joosten almost 2 years

    I have a normal view controller that is embedded in a navigation controller. In this view controller, I have a table view that is using the constraints of the safe area. (I don't use a table view controller)

    The navigation controller is set to prefer large titles and the mode is set to .always. In beta 2 this worked perfectly, So when I came in the title was large and when I scrolled down it became small (Like the normal one). But since beta 3 this doesn't work anymore.

    Anyone know how to turn this back on, or how to make it so when I scroll the table view it will become smaller. Like the behaviour of all the new iOS 11 apps?

    Or is this a bug in the current version of swift 4/iOS 11 but the apps like messenger and settings still work this way.

    Thanks in advance.

  • Jippe Joosten
    Jippe Joosten almost 7 years
    Yes so I do this and the large title shows but never becomes small when I scroll down. It always stays big but when I scroll up and I’m at the top the title becomes even bigger. So the constraints also work properly, it’s just since beta 3 it doesn’t become small when I scroll down.
  • funkenstrahlen
    funkenstrahlen almost 7 years
    This is definitely a bug in iOS 11 but your tip worked for me as a workaround! Thank you!
  • Ely
    Ely over 6 years
    Still the case in the GM build!
  • Jippe Joosten
    Jippe Joosten over 6 years
    I filled a bug report and that one was set as duplicate so they should know about it.
  • Sergio Trejo
    Sergio Trejo over 6 years
    I did this on the Storyboard I attach the two images showing how hierarchy should be, edited ... I added code I used to set Large titles –
  • vicente.fava
    vicente.fava about 6 years
    @SergioTrejo but how do you do to have the button under the table? In my case I have a view that must be under the a scrollView because is a background. Thanks!
  • Jelle
    Jelle over 5 years
    Thank you! that was it for me!