NotchKit 0.4.2

NotchKit 0.4.2

测试已测试
语言语言 SwiftSwift
许可证 MIT
发布时间上次发布2018年1月
SPM支持SPM

Harshil Shah维护。



NotchKit 0.4.2

NotchKit

NotchKit是一种简单的方法来隐藏iPhone X的刘海,并为您的应用创建类似卡片式的界面。灵感来源于Sebastiaan de With的这条推文

我希望/i/愿iPhone 8的UI看起来像这样:使用黑色OLED或壁纸背后的应用来使应用看起来像是“卡片”。这将很漂亮。pic.twitter.com/mravS87NFy

— Sebastiaan de With (@sdw) 2017年8月31日

以下是它的样子

Demo

要求

  • Swift 3
  • iOS 11

安装

NotchKit可通过CocoaPods和Carthage提供。

使用

整合NotchKit极其简单。首先,在存储您的AppDelegate的文件中导入NotchKit

然后,将didFinishLaunchingWithOptions方法替换为以下代码,并用您的自定义视图控制器类的名称替换ViewController

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
    window = NotchKitWindow(frame: UIScreen.main.bounds)
    let rootViewController = ViewController()
    window?.rootViewController = rootViewController
    window?.makeKeyAndVisible()
    return true
}

如果您使用Storyboard,您可以实例化Storyboard并使用以下代码在代码中获取新的rootViewController,并用您的Storyboard的类名替换Main

let storyboard = UIStoryboard(name: "Main", bundle: nil)
let rootViewController = storyboard.instantiateInitialViewController()

如果您针对的iOS版本早于iOS 11,您仍然可以通过条件加载NotchKitWindow使用NotchKit,如下所示,使用#available语法

window = {
    if #available(iOS 11, *) {
        return NotchKitWindow()
    } else {
        return UIWindow()
    }
}()

这就是全部了,你已经完成了!

定制

NotchKit提供了一些定制点。

您可以通过将窗口用作NotchKitWindow来从任何属于窗口的视图或视图控制器调整这些内容,如下所示

(view.window as? NotchKitWindow)?.propertyToCustomise = valueYouWantToSet

目标设备

默认情况下,NotchKit在所有设备上隐藏状态栏和Home指示器。但是,如果您选择,可以将此行为限制为仅iPhone X,在其他设备上不执行任何操作,通过将shouldShowBarsOnlyOniPhoneX属性设置为true

遮罩边缘

默认情况下,NotchKit会对适用边缘进行遮罩。您可以使用maskedEdges属性自定义此行为,该属性接受一个指定您想要遮罩的边缘的UIRectEdge对象。

圆角半径

您可以通过.cornerRadius属性自定义窗口的圆角半径。此属性是一个枚举,可以是.standard,这意味着为您计算所有数值以显示合适的圆角半径,或者您可以设置一个自定义值,将其设置为.custom(n),其中n是您选择的个性化圆角半径。

作者

由Harshil Shah撰写。您可以在Twitter上找到我。

许可

NotchKit可在MIT许可下使用。有关更多信息,请参阅LICENSE文件。


提示:这基本上是在争论如何处理iPhone X的不同方法时作为玩笑所做。

苹果针对iPhone X更新了人机界面指南,明确提出了这一点

不要遮罩或对关键显示功能进行特别注意。不要尝试通过在屏幕顶部和底部放置黑色栏来隐藏设备的圆角、传感器外壳或访问主屏幕的指示器。也不要使用括号、边框、形状或说明性文字等视觉装饰来突出强调这些区域。

我不确定违反HIG是否常被用作拒绝的理由,但我不会就此打赌。

只用了几天在模拟器上使用,我就意识到欣然接受刘海是前进的道路。我将开源这个项目是为了让其他人也能更容易得出这个结论。

#EmbraceTheNotch