@@ -30,6 +30,13 @@ class CollapsableHeaderViewController: UIViewController, NoResultsViewHost {
3030 false
3131 }
3232
33+ // If set to true, all header titles will always be shown.
34+ // If set to false, largeTitleView and promptView labels are hidden in compact height (default behavior).
35+ //
36+ var alwaysShowHeaderTitles : Bool {
37+ false
38+ }
39+
3340 private let hasDefaultAction : Bool
3441 private var notificationObservers : [ NSObjectProtocol ] = [ ]
3542 @IBOutlet weak var containerView : UIView !
@@ -55,6 +62,7 @@ class CollapsableHeaderViewController: UIViewController, NoResultsViewHost {
5562 @IBOutlet weak var promptView : UILabel !
5663 @IBOutlet weak var accessoryBar : UIView !
5764 @IBOutlet weak var accessoryBarHeightConstraint : NSLayoutConstraint !
65+ @IBOutlet weak var accessoryBarTopCompactConstraint : NSLayoutConstraint !
5866 @IBOutlet weak var footerView : UIView !
5967 @IBOutlet weak var footerHeightContraint : NSLayoutConstraint !
6068 @IBOutlet weak var defaultActionButton : UIButton !
@@ -118,7 +126,7 @@ class CollapsableHeaderViewController: UIViewController, NoResultsViewHost {
118126 }
119127
120128 private var shouldUseCompactLayout : Bool {
121- return traitCollection. verticalSizeClass == . compact
129+ return alwaysShowHeaderTitles ? false : ( traitCollection. verticalSizeClass == . compact)
122130 }
123131
124132 private var topInset : CGFloat = 0
@@ -241,6 +249,7 @@ class CollapsableHeaderViewController: UIViewController, NoResultsViewHost {
241249 layoutHeader ( )
242250 }
243251
252+ configureHeaderTitleVisibility ( )
244253 startObservingKeyboardChanges ( )
245254 super. viewWillAppear ( animated)
246255 }
@@ -257,9 +266,12 @@ class CollapsableHeaderViewController: UIViewController, NoResultsViewHost {
257266 override func viewWillTransition( to size: CGSize , with coordinator: UIViewControllerTransitionCoordinator ) {
258267 super. viewWillTransition ( to: size, with: coordinator)
259268
260- guard isShowingNoResults || alwaysResetHeaderOnRotation else { return }
269+ guard isShowingNoResults || alwaysResetHeaderOnRotation else {
270+ return
271+ }
261272
262273 coordinator. animate ( alongsideTransition: nil ) { ( _) in
274+ self . accessoryBarTopCompactConstraint. isActive = self . shouldUseCompactLayout
263275 self . updateHeaderDisplay ( )
264276 // we're keeping this only for no results,
265277 // as originally intended before introducing the flag alwaysResetHeaderOnRotation
@@ -279,6 +291,7 @@ class CollapsableHeaderViewController: UIViewController, NoResultsViewHost {
279291
280292 if let previousTraitCollection = previousTraitCollection, traitCollection. verticalSizeClass != previousTraitCollection. verticalSizeClass {
281293 isUserInitiatedScroll = false
294+ configureHeaderTitleVisibility ( )
282295 layoutHeaderInsets ( )
283296
284297 // This helps reset the header changes after a rotation.
@@ -372,6 +385,11 @@ class CollapsableHeaderViewController: UIViewController, NoResultsViewHost {
372385 headerImageView. image = headerImage
373386 }
374387
388+ func configureHeaderTitleVisibility( ) {
389+ largeTitleView. isHidden = shouldUseCompactLayout
390+ promptView. isHidden = shouldUseCompactLayout
391+ }
392+
375393 private func styleButtons( ) {
376394 let seperator = UIColor . separator
377395
0 commit comments