Tag: 状态栏

如何在iOS中修复错误的状态栏方向

当我第一次启动iOS时,当时是iOS 8,我有一个错误花了整整一天的时间才弄清楚。 问题是,尽管我已经将主ViewController锁定为纵向模式,但状态栏始终会定向为设备定向。 这就是为什么我在GitHub上启动notes项目的原因,该项目详细说明了我所面临的问题。 ViewController已锁定为人像,但设备旋转时状态栏也会旋转·问题2• 问题rootViewController被锁定为纵向。 当我旋转时,视图控制器为纵向,但状态为… github.com 现在是iOS 12,令我惊讶的是人们仍然遇到这个问题。 今天,我将在iOS 12项目中修订此问题并使用Swift。 支持的界面方向 大多数应用仅支持纵向模式,横向或横向有1或2个屏幕可用于图像查看或视频播放器。 因此,我们通常声明纵向,横向左和横向右。 从iOS 7开始,应用具有简单的设计,着重于内容。 UIViewController在外观规范中被赋予了更大的作用。 假设我们有一个MainViewController作为rootViewController ,我们希望将其锁定为纵向模式。 @UIApplicationMain 类AppDelegate:UIResponder,UIApplicationDelegate { var window:UIWindow? func application(_ application:UIApplication,didFinishLaunchingWithOptions launchOptions:[UIApplication.LaunchOptionsKey:Any]?)->布尔{ 窗口= UIWindow(框架:UIScreen.main.bounds) window?.rootViewController = MainViewController() 窗口?.makeKeyAndVisible() 返回真 } } 我们可以在Info.plist指定一个名为UIViewControllerBasedStatusBarAppearance的属性,以断言我们希望UIViewController动态控制状态栏的外观。 一个布尔值,指示状态栏外观是否基于当前视图控制器的首选样式。 首先在Info.plist中进行声明 UIViewControllerBasedStatusBarAppearance 然后在MainViewController ,将状态栏锁定为纵向 导入UIKit 类MainViewController:UIViewController { 让标签= UILabel() 覆盖func viewDidLoad(){ super.viewDidLoad() view.backgroundColor = .yellow […]

状态栏的神秘案例

我想要的只是状态栏的两件事: 我希望它默认为白色,因为它会在深色背景上 我希望能够不时地暂时隐藏它。 直截了当吧? 没那么多……让我们看一下这个案例。 因此,如果您四处逛逛,有几种方法可以操纵状态栏,让我们看一下: 在“常规”选项卡中,您可以找到用于项目目标的首选项的两个字段,这些字段用于调整状态栏的默认行为: 状态栏样式-在浅色 (即浅色文本)或默认值 (即深色文本)之间选择 隐藏状态栏-一个复选框。 这些字段是从info plist派生的,这是调整这些字段的另一种方法: 如果您使用info.plist来调整状态栏的默认行为,则需要为以下行添加行: 状态栏最初是隐藏的 ( UIStatusBarHidden ) 选择是或否 。 状态栏样式 ( UIStatusBarStyle )。 从以下任一选项中进行选择: 默认 ( UIStatusBarStyleDefault ) 轻 ( UIStatusBarStyleLightContent ) 忽略Xcode希望您在不透明黑色样式和透明黑色样式(alpha值为0.5)之间进行选择。 这些是不推荐使用的样式,似乎没有人告诉过属性列表编辑器! 如果仔细观察,您会注意到我在info.plist中设置了另一条与状态栏相关的行-另一个名为基于视图控制器的状态栏外观的布尔属性-我将在稍后再讨论这一行。 因此,它们是为状态栏样式设置默认值以及是否将其隐藏的方法。 但是,如果您要临时更改这些默认值,该怎么办? 如果环顾互联网,您会看到提到的两个替代解决方案: 在UIAppDelegate上设置属性 覆盖视图控制器类中的属性 有些人会建议您在UIAppDelegate上设置属性: UIApplication.shared.statusBarStyle = .default //设置样式UIApplication.shared.isStatusBarHidden = false //如果隐藏则设置 例如,可以在应用程序的UIAppDelegate的didFinishLaunchingWithOptions方法中或在您真正喜欢的任何地方进行设置(例如,如果要临时更改视图控制器的设置,则可以在viewDidAppear和viewDidDisappear方法中进行viewDidDisappear 。 听起来不错,对吧? 只需调用一种方法即可更新状态栏,非常简单。 哦,等等,对不起。 我忘了提一下-iOS […]

iOS 11封面的动作调整

在iOS 10中,通知会在锁定屏幕上以及您从顶部边缘向下滑动的通知中心中列出。 在iOS 11中,Apple尝试通过对两者采用锁屏设计来统一这两种视图。 您现在从顶部拖动的内容称为封面,基本上是锁定屏幕的“非锁定”版本。 使用现有设计(在上面模拟),您可以将视图拖动为单个静态零件。 对于我们中几乎没有通知的人来说,这通常感觉就像拖着一个空的东西,这可能令人沮丧。 动作调整 下面的模型探讨了如何使交互同时变得更加引人入胜并且可能更有用。 当您开始拖动时,状态栏的时间标签会急剧膨胀,直到变成庞大,熟悉的封面之一。 这进一步统一了UI,并使其更加有趣和动态。 这个概念与“封面” 基本上是状态栏的扩展状态有关。 由于Cover Sheet具有与锁定屏幕相同的设计,因此某些用户(例如我!)可能首先认为,通过拉下该表可以锁定设备。 事实并非如此。 由于重新设计的感觉不太静态,因此内容现在处于浮动状态,这可能有助于减少混乱的风险。 更重要的是,所建议的调整使查看时间和日期变得很方便,通常在状态栏的信息难以读取(光线不好,对比度差,眼睛疲劳)或根本不显示的情况下。 在当前的iOS 11实现中,要查看舒适的时间标签,您必须完全拉下Cover Cover或进入锁定屏幕(例如,按两次Power键)。 两种方法都使人分心和费力。 在iPad上的iOS 11中,基于一项思想,即在不中断用户流程的情况下可以访问某些功能的相同思想上,做了一个出色的改进:从底部边缘向上轻扫一点,应用程序停靠栏立即弹出,而不会阻塞当前应用。 如果继续一路向上滑动,您会得到更多,但通常不需要更多。 这是渐进式披露的概念,但是手势驱动的,连续的,而不是通常的全有或全无,扩展或崩溃的方法。 笔记 带有该概念的通知将如何显示? 我还没有探索。 但是按照相同的展开逻辑,我们可以想象通知栈的顶部将首先出现; 一件好事,因为这意味着最新的通知将首先显示。 与原始设计相比有其他好处吗? 这篇文章中的模型是使用适用于Mac的Principle快速制作的。 实际的iOS 11实现使用了我很高兴地跳过的复杂模糊过渡。