最近iPhone上的一个新闻阅读软件Reeder更新了, 非常好用, 稳定,而且速度飞快.
这个软件征服我这个吹毛求疵的人的一个地方, 其实在于一个小细节, 有了这个细节, 我觉得, 这软件值了!
这个细节就是系统状态栏图标, 从来没有一个程序在状态栏上做文章, Reeder 做到了, 新闻的刷新, 图片加载, 在系统状态栏上显示, 显得非常的苹果味道, 如图:

当然, 本文是讨论技术, 不是软件评测.
国外好多论坛上在问这个问题,但答案都是需要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 就会覆盖到状态栏上了, 你猜对了么??
分享到:
相关推荐
总的来说,通过创建一个额外的UIWindow实例并设置其windowLevel,我们可以轻松地在状态栏上添加自定义视图,实现个性化的设计。这种方法在不隐藏状态栏的情况下提供了更大的灵活性,是iOS开发中实现自定义状态栏效果...
要使自定义状态栏视图覆盖原生状态栏,需要将其添加到`UIApplication`的主窗口上,而不是添加到某个特定的`UIViewController`的视图层次结构中。这样,无论导航控制器如何切换,自定义状态栏都会保持可见。 5. ...
这通常需要自定义一个覆盖状态栏的视图,例如`Customized StatusOverlay`。创建一个新的UIView子类,添加UILabel来显示文本,并通过调整frame使其覆盖在状态栏之上。在需要显示“Loading”时,将这个自定义视图添加...
接着,他们会在应用启动时初始化这个新的window,设置其frame以覆盖状态栏区域,并调整其windowLevel高于UIWindowLevelStatusBar,确保它位于系统状态栏之上。 然后,为了在新window上显示通知,开发者可能会创建一...
本教程将深入探讨如何在iPhone上定制状态栏,实现覆盖原有状态栏并显示自定义视图。 首先,我们要了解iOS中的StatusBar有两种主要样式:`UIStatusBarStyleLightContent`和`UIStatusBarStyleDefault`。前者背景为...
这样,我们就可以在这个新的窗口上添加视图,以达到覆盖状态栏的效果。 ```swift // 创建新窗口 let newWindow = UIWindow(frame:UIScreen.main.bounds) newWindow.windowLevel = UIWindow.Level.statusBar + 1 // ...
以新浪微博客户端为例,它会在状态栏上显示消息发送的状态。要实现这样的效果,你可以创建一个自定义的`CustomStatusBar`类,继承自`UIWindow`。在这个类中,可以添加一个`UILabel`来显示自定义信息: ```objc @...
"swift-一个类似映客qq音乐新版qq状态栏上的提示效果"这个项目专注于创建一种特定的UI控件,模仿了映客、QQ音乐以及新版QQ应用在状态栏上显示提示信息的效果。这种效果通常用于向用户传达短暂的通知或者操作反馈,...
- 如果需要更高级的自定义,比如淘宝那样将状态栏与导航栏融为一体,开发者需要覆盖`prefersStatusBarHidden`和`preferredStatusBarUpdateAnimation`方法。 - 使用`UIStatusBarManager`和`UIStatusBar(hidden: ...
在iOS应用开发中,状态栏(StatusBar)是...总之,iOS的状态栏定制是一个多方面的问题,涉及到系统API、私有方法、自定义View等多方面的技巧。开发者需要根据具体需求灵活运用,同时注意保持良好的兼容性和用户体验。
ios7 demo下载 searchbar与状态栏重叠已修复。 关键代码: -(void)viewDidLoad{ [super viewDidLoad]; // self.table.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];//去除多余行 //设置table...
总结起来,"ios-简单的上拉覆盖导航栏.zip" 涉及到的主要知识点包括: 1. UITableView的`scrollViewDidScroll:`方法及其滚动事件处理。 2. UINavigationBar的显示与隐藏,以及透明度控制。 3. 自定义导航栏背景视图...
为解决这个问题,可以创建一个新的UIWindow,将其设置为高于主window的层级,并将这个新的UIWindow覆盖在状态栏上。然后,添加一个全屏的UIView到新UIWindow上,监听这个UIView的点击事件,以此模拟点击状态栏的效果...
如果需要在状态栏上添加额外的视图,如进度条,可以创建一个继承自`UIView`的子类,然后覆盖`layoutSubviews`方法以适应状态栏大小。将其作为`window`的子视图,并调整其层级高于其他视图。 6. **SwiftUI中的状态...
2. **设置UIWindow层级**:为了使自定义状态栏覆盖在其他视图之上,我们需要调整其windowLevel属性。可以将其设置为`UIWindowLevelStatusBar`或更高,这样状态栏就会出现在正常视图之上。 3. **设计自定义视图**:...
3. **动画过渡**: 当用户上滑或下滑时,我们可以通过`UIView.animate(withDuration:animations:)`方法平滑地改变导航栏和TabBar的高度,实现隐藏或显示的动画效果。 4. **状态保存**: 为了在用户切换Tab后保持导航...
在淘宝的navigationBar上,当用户触摸导航栏上的按钮时,会出现两个向外扩散的圆形波纹,这两个波纹大小不同,给人一种深度和层次感。这种设计使得用户能明确感知到其操作已被系统接收。 要实现这样的效果,我们...
在处理屏幕和状态栏方面,笔记提供了获取状态栏高度、导航栏和工具栏高度的方法,隐藏或显示状态栏,以及当屏幕方向改变时如何进行检测和适配屏幕布局。 针对视图层面上的自定义,笔记中包含了设置按钮、自定义...
导航栏(UINavigationBar)上的按钮默认会根据屏幕顶部的安全区域进行调整,可能会与状态栏重叠,尤其是在自定义了按钮的位置后。 解决此问题的一种方法是利用Auto Layout。在Swift中,可以为自定义按钮设置约束,...
然后在`- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated`中覆盖父类方法,将这个自定义视图添加到导航栏的背景视图上。 在实现多按钮的过程中,ivar变量的管理显得尤为...