swift - How to mimic `UITableViewController` showing of the large titles in `navigationBar` on iOS 11 -
i'm trying use preferslargetitles
ios 11 in application. works expected in subclasses of uitableviewcontroller
:
navigationcontroller?.navigationbar.preferslargetitles = true
however, in 1 case needed subclass uiviewcontroller
, add table view myself. in situation needed constraint table view myself:
tableview.topanchor.constraint(equalto: self.view.safearealayoutguide.topanchor).isactive = true tableview.leftanchor.constraint(equalto: self.view.leftanchor).isactive = true tableview.rightanchor.constraint(equalto: self.view.rightanchor).isactive = true tableview.bottomanchor.constraint(equalto: self.otherview.topanchor).isactive = true
while these constraints present tableview
expect, navigation bar uses large title. mimic behavior of uitableviewcontroller
, when tableview
scrolled top, large title presented, otherwise title collapses normal one.
how solve this?
seems have been able emulate behavior more or less closely enough. implementing delegate method tableview
reacts scrolling, , running code uses current contentoffset
either show, or hide large title (uitableview
inherits uiscrollview
, scrollview
parameter refers in case tableview
):
func scrollviewdidscroll(_ scrollview: uiscrollview) { if scrollview.contentoffset.y <= 0 { self.navigationitem.largetitledisplaymode = .always } else { self.navigationitem.largetitledisplaymode = .never } self.navigationcontroller?.navigationbar.setneedslayout() self.view.setneedslayout() uiview.animate(withduration: 0.25, animations: { self.navigationcontroller?.navigationbar.layoutifneeded() self.view.layoutifneeded() }) }
Comments
Post a Comment