text: #if USE_UIKIT_PUBLIC_HEADERS || !__has_include(<UIKitCore/UINavigationBar.h>)
  //
  //  UINavigationBar.h
  //  UIKit
  //
  //  Copyright (c) 2005-2018 Apple Inc. All rights reserved.
  //
  
  #import <Foundation/Foundation.h>
  #import <CoreGraphics/CoreGraphics.h>
  #import <UIKit/UIView.h>
  #import <UIKit/UIInterface.h>
  #import <UIKit/UIFont.h>
  #import <UIKit/UIKitDefines.h>
  #import <UIKit/UIBarCommon.h>
  #import <UIKit/UINavigationItem.h>
  
  NS_ASSUME_NONNULL_BEGIN
  
  @class UINavigationItem, UIBarButtonItem, UIImage, UIColor;
  @protocol UINavigationBarDelegate;
  
  NS_CLASS_AVAILABLE_IOS(2_0) @interface UINavigationBar : UIView <NSCoding, UIBarPositioning> 
  
  @property(nonatomic,assign) UIBarStyle barStyle UI_APPEARANCE_SELECTOR __TVOS_PROHIBITED;
  @property(nullable,nonatomic,weak) id<UINavigationBarDelegate> delegate;
  
  /*
   New behavior on iOS 7.
   Default is YES.
   You may force an opaque background by setting the property to NO.
   If the navigation bar has a custom background image, the default is inferred 
   from the alpha values of the image—YES if it has any pixel with alpha < 1.0
   If you send setTranslucent:YES to a bar with an opaque custom background image
   it will apply a system opacity less than 1.0 to the image.
   If you send setTranslucent:NO to a bar with a translucent custom background image
   it will provide an opaque background for the image using the bar's barTintColor if defined, or black
   for UIBarStyleBlack or white for UIBarStyleDefault if barTintColor is nil.
   */
  @property(nonatomic,assign,getter=isTranslucent) BOOL translucent NS_AVAILABLE_IOS(3_0) UI_APPEARANCE_SELECTOR; // Default is NO on iOS 6 and earlier. Always YES if barStyle is set to UIBarStyleBlackTranslucent
  
  // Pushing a navigation item displays the item's title in the center of the navigation bar.
  // The previous top navigation item (if it exists) is displayed as a "back" button on the left.
  - (void)pushNavigationItem:(UINavigationItem *)item animated:(BOOL)animated;
  - (nullable UINavigationItem *)popNavigationItemAnimated:(BOOL)animated; // Returns the item that was popped.
  
  @property(nullable, nonatomic,readonly,strong) UINavigationItem *topItem;
  @property(nullable, nonatomic,readonly,strong) UINavigationItem *backItem;
  
  @property(nullable,nonatomic,copy) NSArray<UINavigationItem *> *items;
  - (void)setItems:(nullable NSArray<UINavigationItem *> *)items animated:(BOOL)animated; // If animated is YES, then simulate a push or pop depending on whether the new top item was previously in the stack.
  
  /// When set to YES, the navigation bar will use a larger out-of-line title view when requested by the current navigation item. To specify when the large out-of-line title view appears, see UINavigationItem.largeTitleDisplayMode. Defaults to NO.
  @property (nonatomic, readwrite, assign) BOOL prefersLargeTitles UI_APPEARANCE_SELECTOR API_AVAILABLE(ios(11.0)) API_UNAVAILABLE(tvos);
  
  /*
   The behavior of tintColor for bars has changed on iOS 7.0. It no longer affects the bar's background
   and behaves as described for the tintColor property added to UIView.
   To tint the bar's background, please use -barTintColor.
   */
  @property(null_resettable, nonatomic,strong) UIColor *tintColor;
  @property(nullable, nonatomic,strong) UIColor *barTintColor NS_AVAILABLE_IOS(7_0) UI_APPEARANCE_SELECTOR;  // default is nil
  
  /* In general, you should specify a value for the normal state to be used by other states which don't have a custom value set.
   
   Similarly, when a property is dependent on the bar metrics (on the iPhone in landscape orientation, bars have a different height from standard), be sure to specify a value for UIBarMetricsDefault.
   */
  
  - (void)setBackgroundImage:(nullable UIImage *)backgroundImage forBarPosition:(UIBarPosition)barPosition barMetrics:(UIBarMetrics)barMetrics NS_AVAILABLE_IOS(7_0) UI_APPEARANCE_SELECTOR;
  - (nullable UIImage *)backgroundImageForBarPosition:(UIBarPosition)barPosition barMetrics:(UIBarMetrics)barMetrics NS_AVAILABLE_IOS(7_0) UI_APPEARANCE_SELECTOR;
  
  /*
  Same as using UIBarPositionAny in -setBackgroundImage:forBarPosition:barMetrics. Resizable images will be stretched
  vertically if necessary when the navigation bar is in the position UIBarPositionTopAttached.
  */
  - (void)setBackgroundImage:(nullable UIImage *)backgroundImage forBarMetrics:(UIBarMetrics)barMetrics NS_AVAILABLE_IOS(5_0) UI_APPEARANCE_SELECTOR;
  - (nullable UIImage *)backgroundImageForBarMetrics:(UIBarMetrics)barMetrics NS_AVAILABLE_IOS(5_0) UI_APPEARANCE_SELECTOR;
  
  /* Default is nil. When non-nil, a custom shadow image to show instead of the default shadow image. For a custom shadow to be shown, a custom background image must also be set with -setBackgroundImage:forBarMetrics: (if the default background image is used, the default shadow image will be used).
   */
  @property(nullable, nonatomic,strong) UIImage *shadowImage NS_AVAILABLE_IOS(6_0) UI_APPEARANCE_SELECTOR;
  
  /* You may specify the font, text color, and shadow properties for the title in the text attributes dictionary, using the keys found in NSAttributedString.h.
   */
  @property(nullable,nonatomic,copy) NSDictionary<NSAttributedStringKey, id> *titleTextAttributes NS_AVAILABLE_IOS(5_0) UI_APPEARANCE_SELECTOR;
  
  /* You may specify the font, text color, and shadow properties for the large title in the text attributes dictionary, using the keys found in NSAttributedString.h.
   */
  @property(nullable, nonatomic, copy) NSDictionary<NSAttributedStringKey, id> *largeTitleTextAttributes UI_APPEARANCE_SELECTOR API_AVAILABLE(ios(11.0)) API_UNAVAILABLE(tvos);
  
  - (void)setTitleVerticalPositionAdjustment:(CGFloat)adjustment forBarMetrics:(UIBarMetrics)barMetrics NS_AVAILABLE_IOS(5_0) UI_APPEARANCE_SELECTOR;
  - (CGFloat)titleVerticalPositionAdjustmentForBarMetrics:(UIBarMetrics)barMetrics NS_AVAILABLE_IOS(5_0) UI_APPEARANCE_SELECTOR;
  
  /*
   The back indicator image is shown beside the back button.
   The back indicator transition mask image is used as a mask for content during push and pop transitions
   Note: These properties must both be set if you want to customize the back indicator image.
   */
  @property(nullable,nonatomic,strong) UIImage *backIndicatorImage NS_AVAILABLE_IOS(7_0) UI_APPEARANCE_SELECTOR __TVOS_PROHIBITED;
  @property(nullable,nonatomic,strong) UIImage *backIndicatorTransitionMaskImage NS_AVAILABLE_IOS(7_0) UI_APPEARANCE_SELECTOR __TVOS_PROHIBITED;
  
  @end
  
  @protocol UINavigationBarDelegate <UIBarPositioningDelegate>
  
  @optional
  
  - (BOOL)navigationBar:(UINavigationBar *)navigationBar shouldPushItem:(UINavigationItem *)item; // called to push. return NO not to.
  - (void)navigationBar:(UINavigationBar *)navigationBar didPushItem:(UINavigationItem *)item;    // called at end of animation of push or immediately if not animated
  - (BOOL)navigationBar:(UINavigationBar *)navigationBar shouldPopItem:(UINavigationItem *)item;  // same as push methods
  - (void)navigationBar:(UINavigationBar *)navigationBar didPopItem:(UINavigationItem *)item;
  
  @end
  
  NS_ASSUME_NONNULL_END
  
  #else
  #import <UIKitCore/UINavigationBar.h>
  #endif
  