美文网首页
动态改变状态栏

动态改变状态栏

作者: 弑神指 | 来源:发表于2018-03-24 16:08 被阅读0次

1. 9.0之前,改变状态栏方式 

.plist 文件 设置 View controller-based status bar appearance = no; 不可以继承全局状态栏风格,并重写。

application.statusBarStyle = UIStatusBarStyleLightContent; 

// Setting the statusBarStyle does nothing if your application is using the default UIViewController-based status bar system.

@property(readwrite, nonatomic) UIStatusBarStyle statusBarStyle NS_DEPRECATED_IOS(2_0, 9_0, "Use -[UIViewController preferredStatusBarStyle]") __TVOS_PROHIBITED;

2.9.0以后,可以通过 preferredStatusBarStyle 方式修改。

一 :首先设置.plist  View controller-based status bar appearance = YES;

二:设计两组改变方式:

1.(多个)涉及是UINavigationController导航,动态设置切换ViewController不同

2.(单个)仅设计到某个ViewController变换

3.上述两种情况又分切换类型:push,presentmodel等调用次序不同。

三:调用  [self setNeedsStatusBarAppearanceUpdate];

如果根导航是UINavigationController 不用在主动调用,默认调用该方法。


多个:

// Override to return a child view controller or nil. If non-nil, that view controller's status bar appearance attributes will be used. If nil, self is used. Whenever the return values from these methods change, -setNeedsUpdatedStatusBarAttributes should be called.

#if UIKIT_DEFINE_AS_PROPERTIES

@property(nonatomic,readonly,nullable)UIViewController*childViewControllerForStatusBarStyleNS_AVAILABLE_IOS(7_0)__TVOS_PROHIBITED;

@property(nonatomic,readonly,nullable)UIViewController*childViewControllerForStatusBarHiddenNS_AVAILABLE_IOS(7_0)__TVOS_PROHIBITED;

#else

- (nullableUIViewController *)childViewControllerForStatusBarStyle NS_AVAILABLE_IOS(7_0) __TVOS_PROHIBITED;

- (nullableUIViewController *)childViewControllerForStatusBarHidden NS_AVAILABLE_IOS(7_0) __TVOS_PROHIBITED;

#endif

1.虽然View controller-based status bar appearance = YES;但是全局状态栏样式由RootViewController样式决定。

2.重写或分类重写上面方法

- (nullableUIViewController *)childViewControllerForStatusBarStyle

- (nullableUIViewController *)childViewControllerForStatusBarHidden 

业务决定某个控制器状态栏重写一个或两个方式:

- (UIStatusBarStyle)preferredStatusBarStyle

- (BOOL)prefersStatusBarHidden 


单个情况:

/* The preferredContentSize is used for any container laying out a child view controller.

 */

@property(nonatomic)CGSizepreferredContentSizeNS_AVAILABLE_IOS(7_0);

// These methods control the attributes of the status bar when this view controller is shown. They can be overridden in view controller subclasses to return the desired status bar attributes.

#if UIKIT_DEFINE_AS_PROPERTIES

@property(nonatomic, readonly) UIStatusBarStyle preferredStatusBarStyle NS_AVAILABLE_IOS(7_0) __TVOS_PROHIBITED; // Defaults to UIStatusBarStyleDefault

@property(nonatomic,readonly)BOOLprefersStatusBarHiddenNS_AVAILABLE_IOS(7_0)__TVOS_PROHIBITED;// Defaults to NO

// Override to return the type of animation that should be used for status bar changes for this view controller. This currently only affects changes to prefersStatusBarHidden.

@property(nonatomic,readonly)UIStatusBarAnimationpreferredStatusBarUpdateAnimationNS_AVAILABLE_IOS(7_0)__TVOS_PROHIBITED;// Defaults to UIStatusBarAnimationFade

#else

- (UIStatusBarStyle)preferredStatusBarStyle NS_AVAILABLE_IOS(7_0) __TVOS_PROHIBITED;// Defaults to UIStatusBarStyleDefault

- (BOOL)prefersStatusBarHidden NS_AVAILABLE_IOS(7_0) __TVOS_PROHIBITED;// Defaults to NO

// Override to return the type of animation that should be used for status bar changes for this view controller. This currently only affects changes to prefersStatusBarHidden.

- (UIStatusBarAnimation)preferredStatusBarUpdateAnimation NS_AVAILABLE_IOS(7_0) __TVOS_PROHIBITED;// Defaults to UIStatusBarAnimationFade

#endif

// This should be called whenever the return values for the view controller's status bar attributes have changed. If it is called from within an animation block, the changes will be animated along with the rest of the animation block.

- (void)setNeedsStatusBarAppearanceUpdateNS_AVAILABLE_IOS(7_0)__TVOS_PROHIBITED;

1.主动触发

[self setNeedsStatusBarAppearanceUpdate];

2.业务决定某个控制器状态栏重写一个或两个方式:

- (UIStatusBarStyle)preferredStatusBarStyle

- (BOOL)prefersStatusBarHidden 

相关文章

  • 动态改变状态栏

    1. 9.0之前,改变状态栏方式 .plist 文件 设置View controller-based status...

  • react-native StatusBar状态栏实现之ios安

    简介 StatusBar 是 React Native 用来设置并动态改变设备的状态栏的组件,可以通过设置 Sta...

  • Swift实战小结

    动态改变状态栏字体颜色 图片设置拉伸 当自定义navigationBar时 需要设置固有大小 和 navigati...

  • Android设置透明度引发bug

    再日常开发中,经常会遇到scrollview滑动,改变状态栏颜色的需求。一般做法都是监听滑动距离,动态改变view...

  • [React Native]StatusBar的使用

    StatusBar是React Native 0.20 新增的跨平台组件,它可以用来设置并动态改变设备的状态栏显示...

  • iOS动态切换导航栏字体颜色

    前言:新版本项目UI界面上做了很大的改动,要求状态栏字体颜色也要跟着界面做出动态的改变。在我对设计的理解中,状态栏...

  • Android隐藏状态栏、导航栏

    Android隐藏状态栏、导航栏 Android 动态隐藏显示导航栏,状态栏 一、导航栏: 相关: 二、状态栏: ...

  • iOS 知识小集(Status Bar变换)

    背景 iOS 中经常会有需要在某个界面改变状态栏颜色或者某个界面隐藏状态栏的需求。而改变状态栏颜色和控制状态栏显示...

  • iOS顶部状态栏改变造成的bug解决

    iOS顶部状态栏改变造成的bug解决 iOS顶部状态栏改变造成的bug解决

  • 设置状态栏样式

    全局 如果想改变所有控制器的状态栏样式,可以借助Info.plist实现 状态栏默认颜色是黑色文本 改变状态栏为白...

网友评论

      本文标题:动态改变状态栏

      本文链接:https://www.haomeiwen.com/subject/wdvqcftx.html