美文网首页ios开发整理iOS定制viewiOS 开发
[self.view superview]与SearchBar激

[self.view superview]与SearchBar激

作者: 船长_ | 来源:发表于2016-04-27 23:21 被阅读214次

    如图设置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]吧?

    相关文章

      网友评论

        本文标题:[self.view superview]与SearchBar激

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