[self.view superview]与SearchBar激活状态下的状态栏背景色

如图设置SearchBar激活状态下,状态栏的背景色

demo.gif

代码

-(void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    [[self.view superview] setBackgroundColor:[UIColor redColor]]; 
}
  • 注意必须在viewDidAppear中这样设置才有效在viewDidLoadviewWillAppear中这段代码无效,为什么呢?话说这个控制器的生命周期有关.

  • self.view superview是谁?请看这个View的层次结构

    demo1.png

iOS程序里面,window是程序视图层次体系的最高层。所有能看到的view,都是要加到这个window上才能被看到。
不管是直接被加到window上,还是通过superview被间接的加到window上,总之一个view你要想看到它,它必须要被加到一个window上去。
所以如果一个view的window属性为nil的话,就说明这个view没有被加到任何window上,是无法看到的

  • 上面是网上摘抄的一段话,结合这句话,我们可以猜到这个红色的View就是window,既然是window,那么设置SearchBar的激活时候的状态栏背景色可以用另外一种熟悉的方法,而且这个方法可以在viewDidLoad中设置;
[[UIApplication sharedApplication].keyWindow setBackgroundColor:[UIColor redColor]];
  • 好吧,现在不用我说大家也应该知道为什么不能在viewDidLoadviewWillAppear中用[self.view superview]吧?
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容