`

把UIView覆盖到状态栏上的方法

 
阅读更多

最近iPhone上的一个新闻阅读软件Reeder更新了, 非常好用, 稳定,而且速度飞快.

这个软件征服我这个吹毛求疵的人的一个地方, 其实在于一个小细节, 有了这个细节, 我觉得, 这软件值了!

这个细节就是系统状态栏图标, 从来没有一个程序在状态栏上做文章, Reeder 做到了, 新闻的刷新, 图片加载, 在系统状态栏上显示, 显得非常的苹果味道, 如图:

IMG_0177.png

当然, 本文是讨论技术, 不是软件评测.

国外好多论坛上在问这个问题,但答案都是需要PrivateAPI之类的,无法上Store的方法. 但是Reeder怎么可以? 我也得可以才行 :) ,经过一段时间的琢磨, 我知道了这个实现方法, 分享给大家.

方法的原理就是, 生成一个新的UIWindow, 把这个Window放在状态栏之上! 其实这个效果早在2.0的时候就能实现, 只是我们这些不求甚解, 学习不扎实的人没有注意到罢了.

那具体怎么做, 我先卖个关子, 大家自己根据这思路研究一下, 其实, 很简单, 很简单, 我几天后公布答案 :) 不要抢答噢 嘎嘎~~~

——————————–

公布答案:

首先 继承 UIWindow, init的方法: 关键的语句 self.windowLevel=UIWindowLevelAlert;

- (id) init

{

CGRectf=[[UIScreen mainScreen]bounds];

CGRects=[[UIApplication sharedApplication]statusBarFrame];

self= [superinitWithFrame:CGRectMake(0,0, f.size.width, s.size.height)];

if(self!=nil) {

self.windowLevel=UIWindowLevelAlert;

self.backgroundColor=[UIColor clearColor];

[selfmakeKeyAndVisible];

}

return self;

}

现在 在这个window添加view 就会覆盖到状态栏上了, 你猜对了么??

分享到:
评论

相关推荐

    iOS 自定义视图覆盖状态栏StatusBar

    总的来说,通过创建一个额外的UIWindow实例并设置其windowLevel,我们可以轻松地在状态栏上添加自定义视图,实现个性化的设计。这种方法在不隐藏状态栏的情况下提供了更大的灵活性,是iOS开发中实现自定义状态栏效果...

    iphone自定义状态栏

    要使自定义状态栏视图覆盖原生状态栏,需要将其添加到`UIApplication`的主窗口上,而不是添加到某个特定的`UIViewController`的视图层次结构中。这样,无论导航控制器如何切换,自定义状态栏都会保持可见。 5. ...

    改变ios状态栏

    这通常需要自定义一个覆盖状态栏的视图,例如`Customized StatusOverlay`。创建一个新的UIView子类,添加UILabel来显示文本,并通过调整frame使其覆盖在状态栏之上。在需要显示“Loading”时,将这个自定义视图添加...

    ios-状态栏通知.zip

    接着,他们会在应用启动时初始化这个新的window,设置其frame以覆盖状态栏区域,并调整其windowLevel高于UIWindowLevelStatusBar,确保它位于系统状态栏之上。 然后,为了在新window上显示通知,开发者可能会创建一...

    StatusBar定制iphone状态栏

    本教程将深入探讨如何在iPhone上定制状态栏,实现覆盖原有状态栏并显示自定义视图。 首先,我们要了解iOS中的StatusBar有两种主要样式:`UIStatusBarStyleLightContent`和`UIStatusBarStyleDefault`。前者背景为...

    ios-改变状态栏.zip

    这样,我们就可以在这个新的窗口上添加视图,以达到覆盖状态栏的效果。 ```swift // 创建新窗口 let newWindow = UIWindow(frame:UIScreen.main.bounds) newWindow.windowLevel = UIWindow.Level.statusBar + 1 // ...

    详解在iOS App中自定义和隐藏状态栏的方法

    以新浪微博客户端为例,它会在状态栏上显示消息发送的状态。要实现这样的效果,你可以创建一个自定义的`CustomStatusBar`类,继承自`UIWindow`。在这个类中,可以添加一个`UILabel`来显示自定义信息: ```objc @...

    swift-一个类似映客qq音乐新版qq状态栏上的提示效果

    "swift-一个类似映客qq音乐新版qq状态栏上的提示效果"这个项目专注于创建一种特定的UI控件,模仿了映客、QQ音乐以及新版QQ应用在状态栏上显示提示信息的效果。这种效果通常用于向用户传达短暂的通知或者操作反馈,...

    IOS应用源码之淘宝状态栏效果.zip

    - 如果需要更高级的自定义,比如淘宝那样将状态栏与导航栏融为一体,开发者需要覆盖`prefersStatusBarHidden`和`preferredStatusBarUpdateAnimation`方法。 - 使用`UIStatusBarManager`和`UIStatusBar(hidden: ...

    iOS 设置状态栏的背景颜色方法

    在iOS应用开发中,状态栏(StatusBar)是...总之,iOS的状态栏定制是一个多方面的问题,涉及到系统API、私有方法、自定义View等多方面的技巧。开发者需要根据具体需求灵活运用,同时注意保持良好的兼容性和用户体验。

    SearchBar和tableView 组合并且不遮住状态栏

    ios7 demo下载 searchbar与状态栏重叠已修复。 关键代码: -(void)viewDidLoad{ [super viewDidLoad]; // self.table.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];//去除多余行 //设置table...

    ios-简单的上拉覆盖导航栏.zip

    总结起来,"ios-简单的上拉覆盖导航栏.zip" 涉及到的主要知识点包括: 1. UITableView的`scrollViewDidScroll:`方法及其滚动事件处理。 2. UINavigationBar的显示与隐藏,以及透明度控制。 3. 自定义导航栏背景视图...

    iOS实现点击状态栏自动回到顶部效果详解

    为解决这个问题,可以创建一个新的UIWindow,将其设置为高于主window的层级,并将这个新的UIWindow覆盖在状态栏上。然后,添加一个全屏的UIView到新UIWindow上,监听这个UIView的点击事件,以此模拟点击状态栏的效果...

    IOS应用源码之顶部状态bar效果 .rar

    如果需要在状态栏上添加额外的视图,如进度条,可以创建一个继承自`UIView`的子类,然后覆盖`layoutSubviews`方法以适应状态栏大小。将其作为`window`的子视图,并调整其层级高于其他视图。 6. **SwiftUI中的状态...

    ios-UIWindow做的StatusBar.zip

    2. **设置UIWindow层级**:为了使自定义状态栏覆盖在其他视图之上,我们需要调整其windowLevel属性。可以将其设置为`UIWindowLevelStatusBar`或更高,这样状态栏就会出现在正常视图之上。 3. **设计自定义视图**:...

    swift版仿映客中间凸出tabBar,上下滑动时隐藏或显示导航栏及标签栏

    3. **动画过渡**: 当用户上滑或下滑时,我们可以通过`UIView.animate(withDuration:animations:)`方法平滑地改变导航栏和TabBar的高度,实现隐藏或显示的动画效果。 4. **状态保存**: 为了在用户切换Tab后保持导航...

    iOS-仿淘宝navigationBar双波纹(Swift版本)

    在淘宝的navigationBar上,当用户触摸导航栏上的按钮时,会出现两个向外扩散的圆形波纹,这两个波纹大小不同,给人一种深度和层次感。这种设计使得用户能明确感知到其操作已被系统接收。 要实现这样的效果,我们...

    iOS开发基本API

    在处理屏幕和状态栏方面,笔记提供了获取状态栏高度、导航栏和工具栏高度的方法,隐藏或显示状态栏,以及当屏幕方向改变时如何进行检测和适配屏幕布局。 针对视图层面上的自定义,笔记中包含了设置按钮、自定义...

    swift-一个iOS11自定义导航栏按钮偏移问题的优雅解决方案

    导航栏(UINavigationBar)上的按钮默认会根据屏幕顶部的安全区域进行调整,可能会与状态栏重叠,尤其是在自定义了按钮的位置后。 解决此问题的一种方法是利用Auto Layout。在Swift中,可以为自定义按钮设置约束,...

    ios 导航栏放置多个按钮及引申的ivar变量的问题

    然后在`- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated`中覆盖父类方法,将这个自定义视图添加到导航栏的背景视图上。 在实现多按钮的过程中,ivar变量的管理显得尤为...

Global site tag (gtag.js) - Google Analytics