美文网首页
iOS 获取状态栏图标

iOS 获取状态栏图标

作者: F森 | 来源:发表于2017-04-12 13:24 被阅读60次

    方式一:KVC

    KVC是一个很好的东西,通过它往往可以做些不可思议的东西,比如访问对象的一些私有属性

    利用这一点,我们可以获取到UIStatusBar

     UIApplication *app = [UIApplication sharedApplication];
     UIView *statusView = [app valueForKey:@"statusBar"];
     statusView.backgroundColor = [UIColor cyanColor];
      NSArray *subViews = [[statusView valueForKey:@"foregroundView"] subviews];
    

    方式二:runtime

    说思路,首先UIStatusBar这个类是可以访问的,不属于私有类,既然如此就可以利用runtime来做点东西!

    1.使用runtime给UIStatusBar添加一个实例方法,这里暂且叫: instanceMethod

    2.添加instanceMethod成功后,使用class_replaceMethod将instanceMethod与实例方法hook_ instanceMethod做替换

    3.在实例方法hook_ instanceMethod中接收self,则该self即为UIStatusBar对象,这样我们就成功的拿到UIStatusBar对象

    相关文章

      网友评论

          本文标题:iOS 获取状态栏图标

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