UINavigationBar(QMUI)

@interface UINavigationBar (QMUI)

/**
 UINavigationBar 在 iOS 11 下所有的 item 都会由 contentView 管理,只要在 UINavigationController init 完成后就能拿到 qmui_contentView 的值
 */
@property(nonatomic, strong, readonly, nullable) UIView *qmui_contentView API_AVAILABLE(ios(11.0));

/**
 UINavigationBar 的背景 view,可能显示磨砂、背景图,顶部有一部分溢出到 UINavigationBar 外。
 
 在 iOS 10 及以后是私有的 _UIBarBackground 类。
 
 在 iOS 9 及以前是私有的 _UINavigationBarBackground 类。
 */
@property(nonatomic, strong, readonly, nullable) UIView *qmui_backgroundView;

/**
 qmui_backgroundView 内显示实际背景的 view,可能是磨砂或者背景图片。
 
 在 iOS 10 及以后,该 view 为 qmui_backgroundView 的 subview,当显示磨砂时是一个 UIVisualEffectView,当显示背景图时是一个 UIImageView。
 
 在 iOS 9 及以前,如果显示磨砂,该 view 为 qmui_backgroundView 的 subview,是一个 _UIBackdropView,如果显示背景图,则返回 qmui_backgroundView 自身,因为 _UINavigationBarBackground 本身就是一个 UIImageView。
 
 @warning 如果要以 view 的方式去修改 UINavigationBar 的背景,由于不同的 iOS 版本,qmui_shadowImageView 和 qmui_backgroundContentView 的层级关系不同,所以为了效果的统一,建议这种情况下操作 qmui_backgroundView 会好过于操作 qmui_backgroundContentView。
 */
@property(nonatomic, strong, readonly, nullable) __kindof UIView *qmui_backgroundContentView;

/**
 qmui_backgroundView 内的 subview,用于显示底部分隔线 shadowImage,注意这个 view 是溢出到 qmui_backgroundView 外的。若 shadowImage 为 [UIImage new],则这个 view 的高度为 0。
 */
@property(nonatomic, strong, readonly, nullable) UIImageView *qmui_shadowImageView;

@end

Undocumented

  • UINavigationBar 在 iOS 11 下所有的 item 都会由 contentView 管理,只要在 UINavigationController init 完成后就能拿到 qmui_contentView 的值

    Declaration

    Objective-C

    @property (nonatomic, strong, readonly, nullable) UIView *qmui_contentView;

    Swift

    var qmui_contentView: UIView? { get }
  • UINavigationBar 的背景 view,可能显示磨砂、背景图,顶部有一部分溢出到 UINavigationBar 外。

    在 iOS 10 及以后是私有的 _UIBarBackground 类。

    在 iOS 9 及以前是私有的 _UINavigationBarBackground 类。

    Declaration

    Objective-C

    @property (nonatomic, strong, readonly, nullable) UIView *qmui_backgroundView;

    Swift

    var qmui_backgroundView: UIView? { get }
  • qmui_backgroundView 内显示实际背景的 view,可能是磨砂或者背景图片。

    在 iOS 10 及以后,该 view 为 qmui_backgroundView 的 subview,当显示磨砂时是一个 UIVisualEffectView,当显示背景图时是一个 UIImageView。

    在 iOS 9 及以前,如果显示磨砂,该 view 为 qmui_backgroundView 的 subview,是一个 _UIBackdropView,如果显示背景图,则返回 qmui_backgroundView 自身,因为 _UINavigationBarBackground 本身就是一个 UIImageView。

    Warning

    如果要以 view 的方式去修改 UINavigationBar 的背景,由于不同的 iOS 版本,qmui_shadowImageView 和 qmui_backgroundContentView 的层级关系不同,所以为了效果的统一,建议这种情况下操作 qmui_backgroundView 会好过于操作 qmui_backgroundContentView。

    Declaration

    Objective-C

    @property (nonatomic, strong, readonly, nullable) __kindof UIView *qmui_backgroundContentView;

    Swift

    var qmui_backgroundContentView: UIView? { get }
  • qmui_backgroundView 内的 subview,用于显示底部分隔线 shadowImage,注意这个 view 是溢出到 qmui_backgroundView 外的。若 shadowImage 为 [UIImage new],则这个 view 的高度为 0。

    Declaration

    Objective-C

    @property (nonatomic, strong, readonly, nullable) UIImageView *qmui_shadowImageView;

    Swift

    var qmui_shadowImageView: UIImageView? { get }